2016-04-06 34 views
1

üzerinden geçersiz kılma Bir üst User modeline sahibim ve her kullanıcı kullanıcının iletişim bilgilerini tutan has_oneContact.Bir alt ilişkilendirmenin ayarlayıcısını üst model

İletişim alanlarından biri email'dur.

- bu bunu yapmak istiyorum başka deyişle User

bir özelliği sanki çeşitli miras nedenleri ve bu soru bağlamında dışında sebeplerden dolayı, doğrudan #email arama yapabilmek isterdim Bunun yerine

user.email 
user.email = "[email protected]" 

- ebeveynden çocuğun alıcı/ayarlayıcı geçersiz kılma, şöyle benim modelleri düzenlendiği

user.contact.email 
user.contact.email = "[email protected]" 

User -

class User < ActiveRecord::Base 
    has_one :contact 

    def email 
    contact.email 
    end 

    def email=(value) 
    contact.email = value 
    end 
end 

class Contact < ActiveRecord::Base 
    belongs_to :user 
end 

User kaydedildiğinde, ayarlayıcıyla ilgili sorunu zaten fark etmiş olabilirsiniz, çocuk modelini kaydetmez.

Bu konuda çalışmak en güçlü nedir?

Teşekkürler!

cevap

0

Tamam, için çözüm bulundu herkes meraklı - ebeveyn kaydedildiğinde düzgün ne zaman çocuk dernekleri tasarrufu - Otomatik tasarrufu

ActiveRecord::AutosaveAssociation tam olarak bu ile yardımcı olan bir modüldür.

Sadece bir autosave: true eklemeniz gerekir. Örnek -

has_one :contact, autosave: true 
Ayrıca silinmek üzere işaretlenen kayıtları yok ilgilenir

ve birkaç diğer fantezi şeyler.

Ayrıca hızlı bir kontrol yaptım ve gerçekten gerekmedikçe akıllıca DB'ye çarpmıyor. Yani, yalnızca üst öğeyi güncelleştirirseniz, başka bir SQL UPDATE deyimiyle alt ilişkilendirmeyi kaydetmeyi zahmet etmez.

here belgelerine göz atın.