students = Student.limit(3)
students.approve()
def self.approve
# ...
end
我想让学生使用each_with_index,但它失败了。 我试过自己,它指出
"NoMethodError: undefined method `each_with_index' for #<Class:0x00000007a1b920>".
我只想在我方法前面的对象,我怎么能这样做,谢谢!
答案 0 :(得分:2)
在approve
方法中,您有一个ActiveRecord :: Relation,但您需要一个数组:
def self.approve_all
all.each_with_index do |user, index|
...
end
end
ActiveRecord模型中的类方法不仅可以在类本身上调用,还可以在ActiveRecord :: Relation对象上调用。
例如,我们不仅可以直接在类.approve_all
上调用Student.approve_all
方法,还可以调用Student
类的任何关系:Student.order(name: :asc).limit(10).where(state: "not_approved").approve_all
< / p>
但我认为该方法至少应该命名为update_all
,我会尝试为这个问题找到更好的解决方案。