私はモデルとユーザーと学校を作りました。そのうちの1つはハーバードという名前です。私は学校がハーバードであるすべてのユーザーを返すことができるようにしたい。このコードセクションはuser.rbファイルにあります。レールモデルのメソッドが動作しない
def self.harvard_students
return User.where.School(name: 'Harvard')
end
私はモデルとユーザーと学校を作りました。そのうちの1つはハーバードという名前です。私は学校がハーバードであるすべてのユーザーを返すことができるようにしたい。このコードセクションはuser.rbファイルにあります。レールモデルのメソッドが動作しない
def self.harvard_students
return User.where.School(name: 'Harvard')
end
私はこのようなことを行うだろう:
# in models/user.rb
scope :harvard_students, -> { joins(:school).where(schools: { name: 'Harvard' }) }
やクラスメソッドとしてこのように使用
def self.harvard_students
joins(:school).where(schools: { name: 'Harvard' })
end
:
User.harvard_students
ありがとう、しかし、自己を使用してそれを使用しようとしています –
私はクラスメソッドでは何のメリットはありませんが、私はこの要件に対処するために私の答えを更新しました。 – spickermann
あなたの関係が設定されていると仮定すると、以下のようにすればうまくいくはずです。あなたは本当にあなたがそれらの学生を別々に扱いたいと思わない限り、ハードコードされたharvard_students
モデルに対して助言したいと思います。
class School < ActiveRecord::Base
has_many :students
end
class User < ActiveRecord::Base
belongs_to :school
def self.harvard_students
School.find_by(name: "Harvard").users
end
end
#....
User.harvard_students
[MVCE](http://stackoverflow.com/help/mcve)を提供する必要があります。 – tambre