rails模型中的方法不起作用

时间:2017-01-08 19:20:49

标签: ruby-on-rails ruby model-view-controller associations

我已经建立了模特用户和学校,其中一所学校的名字叫哈佛。我希望能够归还所有哈佛学校的用户。这部分代码位于user.rb文件中。

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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