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 に答える