Ruby on rails 更新所有用户的列方法

Ruby on rails 更新所有用户的列方法,ruby-on-rails,ruby,Ruby On Rails,Ruby,我正在尝试创建一个方法,该方法将在特定时间为我的所有用户更新列。我用“where”gem来做这件事,但我真的不知道该把这个方法放在哪里 “我的用户”表中有一列:grades,我想根据另一种方法(grade)更新该列。在rails控制台中,执行以下操作时: user.update(:grades => user.grade) 这个很好用。当我在rails控制台中定义我想要的方法时,如下所示: def update_grades(users) users.each do |user|

我正在尝试创建一个方法,该方法将在特定时间为我的所有用户更新列。我用“where”gem来做这件事,但我真的不知道该把这个方法放在哪里

“我的用户”表中有一列:grades,我想根据另一种方法(grade)更新该列。在rails控制台中,执行以下操作时:

user.update(:grades => user.grade)
这个很好用。当我在rails控制台中定义我想要的方法时,如下所示:

def update_grades(users)
 users.each do |user|
  user.update(:grades => user.grade)
 end
end

@users = User.all

update_grades(@users)
这同样有效,并更新所有用户的等级

问题是,我不知道在我的调度程序中该如何放置此方法。我尝试将其放入user.rb模型文件中,但当我调用
update\u grades(@users)
时,它给出了以下错误:

NoMethodError: undefined method `update_grades' for main:Object
NoMethodError: private method `update_grades' called for #<User::ActiveRecord_Relation:0x007fbb753b1b58>
我将其更改为删除(@users),并尝试调用
update\u grades
@users。update\u grades
这两个都不起作用,我收到以下错误:

NoMethodError: undefined method `update_grades' for main:Object
NoMethodError: private method `update_grades' called for #<User::ActiveRecord_Relation:0x007fbb753b1b58>
NoMethodError:调用了私有方法“更新等级”#

我可以在哪里放置该方法,以便调用
update\u grades(@users)
update\u grades

您可以将其作为
User
上的类方法

class User
  def self.update_grades
    all.each do |user|
      user.update(:grades => user.grade)
    end
  end
end
这可以称为
User.update\u grades
a

考虑将其包装到事务中以加快处理速度:

  def self.update_grades
    transaction do
      all.each do |user|
        user.update(:grades => user.grade)
      end
    end
  end

您可以在
User

class User
  def self.update_grades
    all.each do |user|
      user.update(:grades => user.grade)
    end
  end
end
这可以称为
User.update\u grades
a

考虑将其包装到事务中以加快处理速度:

  def self.update_grades
    transaction do
      all.each do |user|
        user.update(:grades => user.grade)
      end
    end
  end

您可以在
User

class User
  def self.update_grades
    all.each do |user|
      user.update(:grades => user.grade)
    end
  end
end
这可以称为
User.update\u grades
a

考虑将其包装到事务中以加快处理速度:

  def self.update_grades
    transaction do
      all.each do |user|
        user.update(:grades => user.grade)
      end
    end
  end

您可以在
User

class User
  def self.update_grades
    all.each do |user|
      user.update(:grades => user.grade)
    end
  end
end
这可以称为
User.update\u grades
a

考虑将其包装到事务中以加快处理速度:

  def self.update_grades
    transaction do
      all.each do |user|
        user.update(:grades => user.grade)
      end
    end
  end

update\u grades()
方法是私有的吗?我没有把它设为私有的,它只是放在用户类中是
update\u grades()
方法私有的吗?我没有把它设为私有的,它只是放在用户类中是
update\u grades()
方法私有的吗,它只是放在用户类中,
update\u grades()
方法是私有的吗?我没有把它设为私有的,它只是放在用户类中