0

私は次の設定をしています:

class Program
   has_many :participants
end

class Participant
   belongs_to :user
end

class User
   has_many :participants
end

クラスメソッドまたはスコープが、特定のユーザーが参加しているすべてのプログラムを返すようにしたい。これが私がこれまでに持っているものです:

def self.where_user_participates(user)
   Program.joins(:participants).where('participants.user_id' => user.id)
end

私はそれがうまくいくと信じていますが、私はそれが好きではありません。私は'idについて話すのではなく、関連付けを使用することを好みますが、それを機能させることができませんでした。例:

def self.where_user_participates(user)
  Program.joins(:participants).where('participants.user' => user)
end

どうすればこれを改善できますか?そして、公式の「スコープ」は不要であり、クラスメソッドはRails 3の「ベストプラクティス」であるというのは本当ですか?

4

1 に答える 1

2
class Program
  has_many :participants
end

class Participant
  belongs_to :user
  belongs_to :program
end

class User
  has_many :participants
  has_many :programs, :through => :participants
end

次に、プログラムの呼び出しを取得するには:

user.programs
于 2013-01-07T17:05:51.337 に答える