2013-03-08 148 views
1

我學習Rails和ActiveRecord的東西,但我有點卡住這個小問題。Rails協會:一種方式協會

可以說你我是產品(庫存),每個產品都有顏色,通常正確的方法是建立關聯。請看看下面的代碼:

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 

的時候,其實查詢應該是:

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

由於顏色在現實中都是唯一的股票項目的財產。我怎樣才能建立一個協會這樣,這樣我可以這樣做:

p @stock_item.colour.name 
> Red 

感謝。

烏默爾

回答

6

你需要添加一個belongs_to的關聯股票,而不是顏色,因爲股價已經可以獲得同樣的效果

class Stock < ActiveRecord::Base 
    belongs_to :colour 
end 

,你最想對顏色的has_many協會

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

非常感謝。我認爲現在是時候閱讀一本關於Rails或指南的書了! – umerh 2013-03-08 17:56:06