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中,是否真的需要官方的範圍,而類方法是'最佳實踐'?
試試這個'Program.joins(:參與者)。凡(用戶:用戶)' – MrYoshiji
我做到了,它不工作:Hirb錯誤:SQLite3 :: SQLException:no such column:programs.user:SELECT「programs」。* FROM「programs」INNER JOIN「participants」ON「participants」。「program_id」=「programs」。「id」WHERE「programs」。 「user」= 2 – pitosalas
我的不好:'Program.joins(:participants).where(參與者:{user_id:user.id})'我認爲你不能直接傳遞用戶對象。使用範圍來避免:scope:for_user,lambda {| user |加入(:參與者).where(參與者:{user_id:user.try(:id)|| user}'並且像'Program.for_user(user)'一樣使用它,其中變量「user」可以是一個id )或一個用戶對象 – MrYoshiji