2012-11-21 11 views
5

Mysql ile COALESCE yalnızca bir tablodaki emtpy değerlerini güncelleştirmek için kullanabilirim.Raylar (ActiveRecord) bir tabloda yalnızca boş değerlerin nasıl birleştirileceği veya güncelleştirileceği

Bunu Rails (ActiveRecord) ile nasıl yapabilirim?

Tablodaki her sütun için if ifadeleri oluşturmak istemiyorum ve bir ActiveRecord karma değerini update_attributes yöntemine iletirsem bunun bir yolu olması gerektiğini tahmin ediyorum.

Teşekkürler.

+0

..... – Meltemi

cevap

-2

O ne istediğini çok net değil ama eğer doğru anlamak, böyle bir şey istiyorum:

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 

Bu güncelleyip vardı sadece olanları geçirmek istediğiniz özelliklerin karma alacak aslen nil. "# {V} _was" yöntemi için ActiveModel::Dirty kullanır.

+1

Bu yanıtı kim reddetti, neden paylaşmak istersiniz? Yanlış olanı yapmazsam cevabı iyileştiremem. –

+0

Bu büyük olasılıkla düşürüldü çünkü atomik değil. İki kaynak aynı kaydı bir defada okuyorsa ilk yazmayı kaybedersiniz. Kayıtları kilitlemelisin. – zach

İlgili konular