我正在学习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
谢谢。
乌默尔
最佳答案
你需要添加一个属于协会的股票,而不是颜色,因为股票有颜色id
class Stock < ActiveRecord::Base
belongs_to :colour
end
你很可能想在颜色上有很多联系
class Colour < ActiveRecord::Base
has_many :stocks
end
关于ruby-on-rails - Rails协会:单向协会,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15296539/