5

使用 Mysql,我可以COALESCE只更新表中的空值。

如何使用 Rails (ActiveRecord) 做到这一点?

我不想为if表中的每一列创建语句,并且我猜测如果我将 ActiveRecord 哈希传递给该update_attributes方法,则必须有一种方法可以做到这一点。

谢谢。

4

1 回答 1

-2

不清楚你在问什么,但如果我理解正确,你想要这样的东西:

class Address < ActiveRecord::Base
  attr_accessible :street, :city, :zip
  def update_null_attributes(hash)
    update_attributes(hash.keep_if { |k,v| __send__("#{v}_was").nil? })
  end
end

这将获取您要更新的属性的哈希值,并仅传递最初为 nil 的属性。它ActiveModel::Dirty用于“#{v}_was”方法。

于 2014-07-02T22:37:51.393 回答