【问题标题】:Rails named_scope with has_and_belongs_to_manyRails named_scope 和 has_and_belongs_to_many
【发布时间】:2009-03-29 07:32:05
【问题描述】:

我有 3 个表格 - movies、films_genres(用于连接 2 个表格)和流派。 在模型 film.rb - has_and_belongs_to_many :genres 在模型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)

Model film.rb 中的 named_scope 用于显示所有电影类型?

【问题讨论】:

    标签: ruby-on-rails ruby


    【解决方案1】:
    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)
    

    为了将多个流派指定为命名范围的一部分,我将其稍微复杂了一些。希望对您有所帮助。

    【讨论】:

      【解决方案2】:

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

      @genres = @film.genres
      

      【讨论】:

        【解决方案3】:

        伙计!我尝试从与电影相关的类型的数据库列表中汇集。我的问题是:如何在 film.rb 模型中使用 named_scome 来做到这一点?我需要这个用于电影过滤器。 链接例如:http://clearcove.ca/blog/2008/12/recipe-restful-search-for-rails/#more-218

        数据库:

        电影: ID 姓名 描述 年份

        电影类型: ID 电影编号 流派_id

        类型: ID 名字

        【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-14
        • 1970-01-01
        • 2011-09-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多