Rails协会:一种方式协会

问题描述:

我学习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 

感谢。

乌默尔

你需要添加一个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