Ruby on rails 更新所有用户的列方法
我正在尝试创建一个方法,该方法将在特定时间为我的所有用户更新列。我用“where”gem来做这件事,但我真的不知道该把这个方法放在哪里 “我的用户”表中有一列:grades,我想根据另一种方法(grade)更新该列。在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|
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()
方法是私有的吗?我没有把它设为私有的,它只是放在用户类中