1

Rails アプリケーションに次の 3 つのテーブル/モデルがあります。

class ProgramType < ActiveRecord::Base
  attr_accessible :name, :description, :position

  has_many :programs
end

class Program < ActiveRecord::Base
  attr_accessible :site_id, :start_date, :end_date, :program_type_id,
                  :active, :name,:short_name

  belongs_to :program_type
  has_many :sessions
end

class Session < ActiveRecord::Base
  belongs_to :program
end

次のクエリはsessions、指定された のレコードだけを返すのではなく、テーブル内のすべてのレコードを返しますProgramType。私は何を間違っていますか?

Session
  .active
  .joins(:program)
  .joins(:program => :program_type)
  .where('program_types.name = ?', "Summer Domestic")

特定の ProgramType のプログラムに属するセッション レコードのみを取得しようとしています。どんな助けでも大歓迎です。

4

1 に答える 1

0

program_typesSQL 文字列を使用しているため、実際に を使用していることを AR が認識していないという事実に関連する問題があると思います。これを試して :

Session
 .active
 .joins( program: :program_type )
 .where( program_types: {name: "Summer Domestic"} )
于 2013-02-01T20:02:00.463 に答える