Rails named_scope 和 has_and_belongs_to_many [英] Rails named_scope with has_and_belongs_to_many

查看:45
本文介绍了Rails named_scope 和 has_and_belongs_to_many的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有 3 个表 - 电影、电影类型(用于连接 2 个表)和类型.在模型 film.rb - has_and_belongs_to_many 中:流派在模型流派.rb - has_and_belongs_to_many :films

i have 3 tables - films, films_genres (for connect 2 tables) and genres. In Model film.rb - has_and_belongs_to_many :genres In Model genre.rb - has_and_belongs_to_many :films

那么,我如何编写这个 sql 代码:

So, how I can write this sql code:

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

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

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

with named_scope in Model film.rb for show all film rolled genres?

推荐答案

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)

为了将多个流派指定为命名范围的一部分,我使这个稍微复杂一些.希望有帮助.

I made this one slightly more complex in order to specify multiple genres as part of your named scope. Hope it helps.

这篇关于Rails named_scope 和 has_and_belongs_to_many的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆