如何连接两个在 rails 中没有关系的 table
how to connect two table that has no relation in rails
我有一个table叫食物和类别,但是这个table没有关系,我想通过另一个叫food_category的table连接它们。我想在食物和类别之间建立一对一的关系,也许图表看起来像这样
class Food < ApplicationRecord
has_one :category
end
class Category < ApplicationRecord
has_one :food
end
class FoodCategory < ApplicationRecord
belongs_to :category
belongs_to :food
end
可以这样做吗?
是的,这是可能的。你只需要做
has_one :category, through: :food_categories
如 Rails docs here 中所述。
但是,这是处理这种关联的 long-winded 方式。如果它将成为 one-to-one,为什么不直接将外键添加到 Food 的 Category 中呢?据推测,您实际上希望类别包含许多 食物记录?似乎以下内容更有意义:
class Food < ApplicationRecord
belongs_to :category
end
class Category < ApplicationRecord
has_many :food
end
class Food < ApplicationRecord
has_one :food_category
has_one :category, through: :food_categories
end
在rails控制台中,您可以这样访问
Food.find(:id).categories
我有一个table叫食物和类别,但是这个table没有关系,我想通过另一个叫food_category的table连接它们。我想在食物和类别之间建立一对一的关系,也许图表看起来像这样
class Food < ApplicationRecord
has_one :category
end
class Category < ApplicationRecord
has_one :food
end
class FoodCategory < ApplicationRecord
belongs_to :category
belongs_to :food
end
可以这样做吗?
是的,这是可能的。你只需要做
has_one :category, through: :food_categories
如 Rails docs here 中所述。
但是,这是处理这种关联的 long-winded 方式。如果它将成为 one-to-one,为什么不直接将外键添加到 Food 的 Category 中呢?据推测,您实际上希望类别包含许多 食物记录?似乎以下内容更有意义:
class Food < ApplicationRecord
belongs_to :category
end
class Category < ApplicationRecord
has_many :food
end
class Food < ApplicationRecord
has_one :food_category
has_one :category, through: :food_categories
end
在rails控制台中,您可以这样访问
Food.find(:id).categories