2017-01-08 5 views
0

私はモデルとユーザーと学校を作りました。そのうちの1つはハーバードという名前です。私は学校がハーバードであるすべてのユーザーを返すことができるようにしたい。このコードセクションはuser.rbファイルにあります。レールモデルのメソッドが動作しない

def self.harvard_students 
    return User.where.School(name: 'Harvard') 
end 
+0

[MVCE](http://stackoverflow.com/help/mcve)を提供する必要があります。 – tambre

答えて

0

私はこのようなことを行うだろう:

# 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 
+0

ありがとう、しかし、自己を使用してそれを使用しようとしています –

+0

私はクラスメソッドでは何のメリットはありませんが、私はこの要件に対処するために私の答えを更新しました。 – spickermann

0

あなたの関係が設定されていると仮定すると、以下のようにすればうまくいくはずです。あなたは本当にあなたがそれらの学生を別々に扱いたいと思わない限り、ハードコードされた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 
関連する問題