ruby-on-rails – 在Model类方法中指定当前抓取的记录

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 在Model类方法中指定当前抓取的记录前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个类方法,我想修改当前由ActiveRecord :: Relation对象抓取的记录.但我不知道如何在类方法中引用当前作用域.自我不这样做.

例:

class User < ActiveRecord::Base
  ...

  def self.modify_those_records
    #thought implicitly #to_a would be called on currently grabbed records but doesn't work
    temp_users_to_a = to_a
    ...
  end
end

我会像这样使用它:

User.some_scope.modify_those_records

所以User.some_scope会给我一个包含一堆用户记录的ActiveRecord :: Relation.然后,我想修改该类方法中的那些记录,然后返回它们.

问题是:我不知道如何在类方法中明确引用“那组记录”.

解决方法

你可以使用current_scope:
def self.modify_those_records
  current_scope.each do |user|
    user.do_something!
  end
end

如果您想根据用户管理员权限订购用户,最好使用ActiveRecord:

scope :order_admins_first,order('CASE WHEN is_admin = true THEN 0 ELSE 1 END,id')
User.some_scope.order_admins_first

代码表示您在users表上有一个布尔列is_admin.

原文链接:https://www.f2er.com/ruby/264880.html

猜你在找的Ruby相关文章