使用 Mysql,我可以COALESCE
只更新表中的空值。
如何使用 Rails (ActiveRecord) 做到这一点?
我不想为if
表中的每一列创建语句,并且我猜测如果我将 ActiveRecord 哈希传递给该update_attributes
方法,则必须有一种方法可以做到这一点。
谢谢。
使用 Mysql,我可以COALESCE
只更新表中的空值。
如何使用 Rails (ActiveRecord) 做到这一点?
我不想为if
表中的每一列创建语句,并且我猜测如果我将 ActiveRecord 哈希传递给该update_attributes
方法,则必须有一种方法可以做到这一点。
谢谢。
不清楚你在问什么,但如果我理解正确,你想要这样的东西:
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”方法。