首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails关联:单向关联

Rails关联:单向关联
EN

Stack Overflow用户
提问于 2013-03-08 22:42:13
回答 1查看 1.6K关注 0票数 1

我正在学习Rails和ActiveRecord的东西,但我有点卡在这个小问题上了。

假设你有一个产品(库存),每个产品都有一个颜色,通常正确的方法是建立一个关联。请看下面的代码:

代码语言:javascript
复制
class Stock < ActiveRecord::Base
 attr_accessible :size, :colour_id
end

class Colours < ActiveRecord::Base
 belongs_to :stock
end

实际上我想要做的是

代码语言:javascript
复制
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

而实际上查询应该是:

代码语言:javascript
复制
SELECT  "colours".* FROM "colours"  WHERE "colours"."id" = "stock"."colour_id"

因为颜色都是独一无二的,实际上是股票项目的一个属性。如何以这种方式设置关联,以便执行以下操作:

代码语言:javascript
复制
p @stock_item.colour.name
> Red

谢谢。

Umer

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-08 22:43:35

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

代码语言:javascript
复制
class Stock < ActiveRecord::Base
  belongs_to :colour
end

而且您很可能需要一个关于颜色的has_many关联

代码语言:javascript
复制
class Colour < ActiveRecord::Base
  has_many :stocks
end
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15296539

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档