如何在Rails :: ActiveRecord中设置多个belongs_to和has_many关系?

时间:2019-05-11 09:37:31

标签: ruby-on-rails activerecord

我正在尝试创建一个电影应用,其中电影可以具有多个类别,而一个类别可以具有多个电影。我想访问这样的电影类别:

aMovie.categories

我希望该查询返回ActiveRecord_Associations_CollectionProxy

反之亦然

aCategory.movi​​es

下面是我的模型和迁移

class Movie < ApplicationRecord
  validates :name, presence: true
end
class Category < ApplicationRecord
  validates :name, presence: true
end
class CreateMovies < ActiveRecord::Migration[5.2]
  def change
    create_table :movies do |t|
      t.string :name
      t.text :description
      t.integer :year
      t.float :rating

      t.timestamps
    end
  end
end
  def change
    create_table :categories do |t|
      t.string :name

      t.timestamps
    end
  end
end

我应该如何调整迁移和模型?

预先感谢

1 个答案:

答案 0 :(得分:1)

您应该创建中间联接表

Movie_categories
belongs_to :movie
belongs_to :category

Movie
has_many :movie_categories
has_many :categories, through: :movie_categories

Category
has_many :movie_categories
has_many :movies, through: :movie_categories

您可以通过https://guides.rubyonrails.org/association_basics.html中的关系来引用has_many