Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails:操作活动记录对象而不保存_Ruby On Rails_Ruby_Ruby On Rails 3_Activerecord - Fatal编程技术网

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

Ruby on rails Rails:操作活动记录对象而不保存,ruby-on-rails,ruby,ruby-on-rails-3,activerecord,Ruby On Rails,Ruby,Ruby On Rails 3,Activerecord,我有一个ActiveRecord对象,我想在不保存到数据库的情况下对其进行操作。当我尝试使用setter操作它时,它会变成一个数组,我再也不能对它调用ActiveRecord方法了。有没有办法防止这种情况发生 以下是我的情况: 我有一个模型Server,我想创建一个方法,返回所有Server记录,将名为imported的属性设置为false,然后返回所有服务器的ActiveRecord列表及其新更新的imported属性,所有这些都不需要更改数据库 这是我的 def servers_import

我有一个
ActiveRecord
对象,我想在不保存到数据库的情况下对其进行操作。当我尝试使用setter操作它时,它会变成一个数组,我再也不能对它调用
ActiveRecord方法了。有没有办法防止这种情况发生

以下是我的情况:

我有一个模型
Server
,我想创建一个方法,返回所有
Server
记录,将名为
imported
属性设置为
false
,然后返回所有
服务器的
ActiveRecord
列表及其新更新的
imported
属性,所有这些都不需要更改数据库

这是我的

def servers_imported
  servers = Servers.all
  servers.each do |server|
    server.imported = false
  end
  servers
end

我的解决方案有效地更改了所有
服务器的
导入的
属性
,而没有实际将此更改保存到数据库中。但是,返回值
servers
是一个
array
而不是
ActiveRecord
对象。我需要它是一个
ActiveRecord
对象,因为我需要使用其他方法。

当您调用
servers=Server时。所有
都会得到一个活动记录对象数组。迭代此集合并返回此数组。
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