【问题标题】:Rails: Manipulate active record object without savingRails:操作活动记录对象而不保存
【发布时间】:2014-02-22 01:00:46
【问题描述】:

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

这是我的情况:

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

这就是我所拥有的

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

我的解决方案有效地更改了所有Serversimported 属性,而实际上并未将此更改保存到数据库中。但是,返回值 serversarray 而不是 ActiveRecord 对象。我需要它是一个ActiveRecord 对象,因为我需要使用其他方法。

【问题讨论】:

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


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-18
      • 1970-01-01
      相关资源
      最近更新 更多