【问题标题】:Rails Associations: One way associationsRails 关联:单向关联
【发布时间】: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

谢谢。

乌尔

【问题讨论】:

    标签: ruby-on-rails ruby associations


    【解决方案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 或指南的书了!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-06
    • 2016-02-24
    相关资源
    最近更新 更多