Ruby on rails 如何在rails中将关系属性连接在一起?

Ruby on rails 如何在rails中将关系属性连接在一起?,ruby-on-rails,ruby,activerecord,join,relation,Ruby On Rails,Ruby,Activerecord,Join,Relation,我的模型中有这种类型的关系: class Movie < ActiveRecord::Base   has_many :movie_genres   has_many :genres, through: :movie_genres end   class MovieGenre < ActiveRecord::Base   belongs_to :movie   belongs_to :genre end   class Genre < ActiveRecord::Base   

我的模型中有这种类型的关系:

class Movie < ActiveRecord::Base
  has_many :movie_genres
  has_many :genres, through: :movie_genres
end
 
class MovieGenre < ActiveRecord::Base
  belongs_to :movie
  belongs_to :genre
end
 
class Genre < ActiveRecord::Base
  has_many :movie_genres
end
class电影
所以我给一部电影分配了多种类型。此外,模型电影类型还有其他列/属性,如“排序顺序”,用于描述移动类型的顺序/优先级。到目前为止,我可以通过调用@movie.genres或*@movie.movie\u genres*检索类型和关系(MovieGenre记录),但是我如何将这两个信息合并并检索它们呢

到目前为止,我看到自己被迫手动搜索每种类型的“电影流派”记录。有没有一种方法可以让我把它们放在一起,这样我就有了例如genre.name和movie\u genre.sort\u order


rails的方式会是什么,或者可能存在一些rails的魔力?

您的关联是错误的:

class Movie < ActiveRecord::Base
  has_many :movie_genres
  has_many :genres, through: :movie_genres
end

class MovieGenre < ActiveRecord::Base
  belongs_to :movie
  belongs_to :genre
end

class Genre < ActiveRecord::Base
  has_many :movie_genres
  has_many :movies, through: :movie_genres
end

奇点是我问题描述中的一个错误,但除此之外,这解决了我的问题。非常感谢。
@movie.movie_genres.count          # => 3
@movie.movie_genres.first          # => MovieGenre
@movie.movie_genres.first.genre    # => Genre