我有一个ActiveRecord
对象,我想在不保存到数据库的情况下进行操作。当我尝试使用setter操作它时,它变成了一个数组,我再也不能再调用ActiveRecord methods
了。有没有办法防止这种情况发生。
以下是我的情况:
我有一个模型Server
,我想创建一个返回所有Server
条记录的方法,将名为attribute
的{{1}}设置为imported
,然后返回所有false
的{{1}}列表以及新更新的ActiveRecord
属性,所有这些都不会更改数据库。
这就是我所拥有的
Servers
我的解决方案有效地更改了所有imported
的{{1}}属性,而没有将此更改实际保存到数据库中。但是,返回值def servers_imported
servers = Servers.all
servers.each do |server|
server.imported = false
end
servers
end
是imported
而不是Servers
对象。我需要它成为servers
对象,因为我需要使用其他方法。
答案 0 :(得分:1)
当您致电servers = Server.all
时,您会获得一系列活动记录对象。您迭代此集合并返回此数组。 servers
变量始终是一个集合。如果需要在活动记录对象上使用其他方法,则需要再次迭代它。
def servers_imported
servers = Servers.all
servers.each do |server|
server.imported = false
end
servers
end
my_servers = servers_imported
my_servers.each do |server|
server.my_pretty_method
end