Rails 关联:单向关联
Posted
技术标签:
【中文标题】Rails 关联:单向关联【英文标题】:Rails Associations: One way associations 【发布时间】:2013-03-08 14:42:12 【问题描述】:我正在学习 Rails 和 ActiveRecord 的东西,但我有点卡在这个小问题上。
假设您是一个产品(库存),并且每个产品都有颜色,通常正确的方法是建立关联。请看下面的代码:
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"
由于颜色在现实中都是唯一的 Stock 项目的属性。如何以这种方式设置关联以便我可以这样做:
p @stock_item.colour.name
> Red
谢谢。
乌尔
【问题讨论】:
【参考方案1】:你需要给 stock 添加一个 belongs_to 关联,而不是给 color 添加一个 belongs_to 关联,因为 stock 有 colour_id
class Stock < ActiveRecord::Base
belongs_to :colour
end
你很可能想要一个关于颜色的 has_many 关联
class Colour < ActiveRecord::Base
has_many :stocks
end
【讨论】:
非常感谢。我想现在是时候好好阅读一本关于 Rails 或指南的书了!以上是关于Rails 关联:单向关联的主要内容,如果未能解决你的问题,请参考以下文章