2013-03-08 3 views
1

레일 및 액티브 레코드 물건을 배우고 있지만이 작은 문제에 붙어 있습니다.레일 연결 : 편도 연결

내가 제품 (주식)이라고 말하면 모든 제품에 색상이 있으며 일반적으로 올바른 설정은 연관을 설정하는 것입니다. 아래의 코드를 살펴 보시기 바랍니다 :

SELECT "colours".* FROM "colours" WHERE "colours"."id" = "stock"."colour_id" 

로 : 내가 할 수 있기를 원하는 사실

class Stock < ActiveRecord::Base 
attr_accessible :size, :colour_id 
end 

class Colours < ActiveRecord::Base 
belongs_to :stock 
end 

입니다

p @stock_item.colour.name 
# But I get this error 
SQLite3::SQLException: no such column: colours.stock_id: SELECT "colours".* FROM "colours" WHERE "colours"."stock_id" = 1 LIMIT 1 

사실 쿼리가 있었어야

색상은 실제로 주식 항목의 고유 한 속성입니다. 어떻게 할 수 있도록이 방법으로 연결을 설정할 수 있습니까?

p @stock_item.colour.name 
> Red 

감사합니다.

Umer

답변

6

당신은 재고가 colour_id를에게

class Stock < ActiveRecord::Base 
    belongs_to :colour 
end 

을 가지고 있으며, 대부분의 아마 색에 has_many 연결을 원하기 때문에 색상을 재고하지하는 belongs_to 연결을 추가 할 필요가

class Colour < ActiveRecord::Base 
    has_many :stocks 
end 
+0

고마워. 이제 레일스 또는 가이드에 대한 책을 제대로 읽을 때가 왔다고 생각합니다. – umerh