Rails:操作活动记录对象而不保存

时间:2014-02-22 01:00:47

标签: ruby-on-rails ruby ruby-on-rails-3 activerecord

我有一个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对象,因为我需要使用其他方法。

1 个答案:

答案 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