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