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
非常感谢。我认为现在是时候阅读一本关于Rails或指南的书了! – umerh 2013-03-08 17:56:06