首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >连接两个不相关模型的合适关联是什么?

连接两个不相关模型的合适关联是什么?
EN

Stack Overflow用户
提问于 2013-10-24 02:56:48
回答 1查看 228关注 0票数 1

我有两个模特,FlyerItemProduct。如果你想到一家电子商店的传单,它可能会播放一台特价电视。在这个特殊的情况下,我想一个传单项目广告的一个产品。

我已经为传单项目定义了如下模型

代码语言:javascript
复制
class FlyerItem < ActiveRecord::Base
  has_one :product
end

迁移看起来像这样

代码语言:javascript
复制
class CreateFlyerItems < ActiveRecord::Migration
  def change
    create_table :flyer_items, :primary_key => :flyer_item_id do |t|
      t.references :product
    end
  end
end

然后,在我的视图中,我尝试访问这样一个项目的特定实例

代码语言:javascript
复制
<% FlyerItem.find do |item| %>
  <p><%= item.product %></p>
<% end %>

然而,rails抛出异常

代码语言:javascript
复制
PG::UndefinedColumn: ERROR:  column products.flyer_item_id does not exist
LINE 1: SELECT  "products".* FROM "products"  WHERE "products"."flye...
                                                    ^
: SELECT  "products".* FROM "products"  WHERE "products"."flyer_item_id" = $1  ORDER BY "products"."product_id" ASC LIMIT 

这是意料之中的,因为产品实际上与传单项目无关,所以product没有,也不应该有该列。

我真正想说的是

从flyer_items选择*,其中flyer_items.product_id = products.product_id

我在这里会用什么样的联想?

联合甚至是正确的方法吗?

传单必须有一个产品,但产品不一定需要分配给任何传单。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-24 03:00:40

而不是has_one,你想要belongs_tobelongs_to关联方法对具有外键列的类进行处理。在关联的另一端,您可以根据需要使用has_manyhas_one

代码语言:javascript
复制
class FlyerItem < ActiveRecord::Base
  belongs_to :product
end

class Product < ActiveRecord::Base
  has_many :flyer_items
end
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19556102

复制
相关文章

相似问题

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