2012-11-21 4 views
5

MysqlではCOALESCEを使用してテーブル内のemtpyの値のみを更新できます。Rails(ActiveRecord)合体またはテーブルの空の値のみを更新する方法

Rails(ActiveRecord)でどうすればいいですか?

ifステートメントをテーブル内の各列に作成する必要はありません。update_attributesメソッドにActiveRecordハッシュを渡すと、それを行う方法があるはずです。

ありがとうございました。

+0

..... – Meltemi

答えて

-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 

これは、あなたが更新したものだけを渡したい属性のハッシュを取るだろうしもともとはゼロ。 "#{v} _was"メソッドにはActiveModel::Dirtyが使用されます。

+1

この回答をダウンした人は誰ですか?理由を分かち合いたいですか?私はそれが間違っていない場合、私は答えを向上させることはできません。 –

+0

これはアトミックではないため、ほとんどの場合下線が引かれていました。 2つのリソースが同じレコードを一度に読み取ると、最初の書き込みが失われます。レコードをロックする必要があります。 – zach

関連する問題