带有has_and_belongs_to_many的Rails named_scope

时间:2009-03-28 19:35:36

标签: ruby-on-rails ruby

我有3张桌子 - 电影,电影_根(连接2张桌子)和流派。 在模型film.rb中 - has_and_belongs_to_many:流派 在Model genre.rb中 - has_and_belongs_to_many:films

那么,我怎么能写这个sql代码:

SELECT * FROM genres INNER JOIN films_genres ON genres。id = films_genres。genre_id WHERE(films_genres。film_id = 1)

使用模型film.rb中的named_scope来显示所有电影滚动类型?

3 个答案:

答案 0 :(得分:7)

class Model < ActiveRecord::Base
  named_scope :by_genre, lambda { |*genres|
    {
      :include => :genres,
      :conditions => [ "genres.id IN (?)", genres.map(&:id) ]
    }
  }
end

Film.by_genre(western, sci_fi).find(:all)

为了指定多个类型作为命名范围的一部分,我使这个稍微复杂一些。希望它有所帮助。

答案 1 :(得分:0)

在英语中,你想从数据库中提取什么?要检索特定电影的类型,请执行以下操作:

@genres = @film.genres

答案 2 :(得分:0)

第一章!我尝试从连接到电影的类型的db列表中汇集。我的问题是:如何在film.rb模型中使用named_scome来做到这一点?我需要这个用于胶片滤镜。 例如,链接:http://clearcove.ca/blog/2008/12/recipe-restful-search-for-rails/#more-218

数据库:

膜: ID 名称 DESCR 年

films_genres: ID film_id genre_id

流派: ID 名称