Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/183.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 连接两个不相关模型的适当关联是什么_Ruby On Rails - Fatal编程技术网

Ruby on rails 连接两个不相关模型的适当关联是什么

Ruby on rails 连接两个不相关模型的适当关联是什么,ruby-on-rails,Ruby On Rails,我有两种型号,FlyerItem和Product。如果你想到一个电子商店的传单,它可能会显示一台正在出售的电视。对于这种特殊情况,我假设一个传单项目宣传一种产品 我已经为传单项目定义了如下模型 class FlyerItem < ActiveRecord::Base has_one :product end class CreateFlyerItems < ActiveRecord::Migration def change create_table :flyer_

我有两种型号,
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 %>
这是意料之中的,因为产品实际上与传单项目无关,所以产品表不应该也不应该有该列

我真正想说的是

从传单项目中选择*,其中传单项目.product\u id=产品.product\u id

我会在这里使用什么类型的关联?
关联是正确的方法吗


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

而不是
有一个
您想要的
属于
属于\u to
关联方法位于具有外键列的类上。在关联的另一端,您可以根据需要使用
has\u many
has\u one

class FlyerItem < ActiveRecord::Base
  belongs_to :product
end

class Product < ActiveRecord::Base
  has_many :flyer_items
end
class FlyerItem
而不是
拥有您想要的
所属的一个
属于\u to
关联方法位于具有外键列的类上。在关联的另一端,您可以根据需要使用
has\u many
has\u one

class FlyerItem < ActiveRecord::Base
  belongs_to :product
end

class Product < ActiveRecord::Base
  has_many :flyer_items
end
class FlyerItem
谢谢!我想在这种情况下,用自然语言来思考是行不通的,因为我在想“一个产品有很多传单是没有意义的”……但是这些是表格之间的关系,所以我应该记得这样想。我花了一些时间来适应它的“语言”方面,但它确实变得容易了。我发现首先考虑相反的关系很有帮助,即不包含外键的关系。在您的情况下,这就是产品。一个产品“有很多传单”,一个用于所有节日和销售。你的解释将更准确地表示传单项目和产品之间的关系。在这种情况下,“有很多”是很有道理的。谢谢!我想在这种情况下,用自然语言来思考是行不通的,因为我在想“一个产品有很多传单是没有意义的”……但是这些是表格之间的关系,所以我应该记得这样想。我花了一些时间来适应它的“语言”方面,但它确实变得容易了。我发现首先考虑相反的关系很有帮助,即不包含外键的关系。在您的情况下,这就是产品。一个产品“有很多传单”,一个用于所有节日和销售。你的解释将更准确地表示传单项目和产品之间的关系。在这种情况下,“有很多”是完全有道理的。