我正在学习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"因为颜色都是独一无二的,实际上是股票项目的一个属性。如何以这种方式设置关联,以便执行以下操作:
p @stock_item.colour.name
> Red谢谢。
Umer
发布于 2013-03-08 22:43:35
您需要将belongs_to关联添加到stock而不是colour,因为stock具有colour_id
class Stock < ActiveRecord::Base
belongs_to :colour
end而且您很可能需要一个关于颜色的has_many关联
class Colour < ActiveRecord::Base
has_many :stocks
endhttps://stackoverflow.com/questions/15296539
复制相似问题