我有两个模型,FlyerItem
和Product
。如果您想到电子商店的传单,它可能会显示正在出售的电视。对于这种特殊情况,我假设传单项目宣传一种产品。
我已经为这样的传单项目定义了模型
class FlyerItem < ActiveRecord::Base
has_one :product
end
迁移看起来像这样
class CreateFlyerItems < ActiveRecord::Migration
def change
create_table :flyer_items, :primary_key => :flyer_item_id do |t|
t.references :product
end
end
end
然后在我的视图中,我尝试访问这样的项目的特定实例
<% FlyerItem.find do |item| %>
<p><%= item.product %></p>
<% end %>
但是rails抛出异常
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
这是意料之中的,因为产品确实与传单项目无关,所以产品表没有也不应该有该列。
我真正想说的是
选择 * FROM flyer_items WHERE flyer_items.product_id = products.product_id
我会在这里使用什么样的关联?
协会甚至是正确的方法吗?
传单必须有一个产品,但产品不一定需要分配给任何传单。