gpt4 book ai didi

ruby-on-rails - Rails 协会 : One way associations

转载 作者:太空宇宙 更新时间:2023-11-03 17:24:52 25 4
gpt4 key购买 nike

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

谢谢。

乌默尔

最佳答案

您需要将 belongs_to 关联添加到 stock 而不是颜色,因为 stock 具有 colour_id

class Stock < ActiveRecord::Base
belongs_to :colour
end

而且您很可能想要 has_many 颜色关联

class Colour < ActiveRecord::Base
has_many :stocks
end

关于ruby-on-rails - Rails 协会 : One way associations,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15296539/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com