28 EYLÜL 2010, Salı
Bağımlı has_one ilişkiler oluşturmak için Nasıl raylar - En İyi Uygulama:
Has_one ilişkiler oluşturmak için en iyi uygulama nedir bana söyler misiniz?
f.e. eğer kullanıcı bir modeli var, ve bir profil olmalı...
Bunu nasıl yapabilir miyim?
Bir çözüm olurdu:
# user.rb
class User << ActiveRecord::Base
after_create :set_default_association
def set_default_association
self.create_profile
end
end
Ama bakmıyor çok temiz görünüyor... Herhangi öneriyor?
CEVAP
28 EYLÜL 2010, Salı
En iyi has_one ilişkisi oluşturmak için bir uygulamadır before_create
yerine after_create
ActiveRecord geri arama kullanmak için. Ya da daha önceki bir geri arama kullanmak ve bu konularda (varsa) çocuğun kendi doğrulama adım bile geçme.
Çünkü:
- iyi bir kodlama ile, çocuk kaydın doğrulamalarını eğer doğrulaması başarısız olursa kullanıcıya gösterilmesi için fırsat var
- ana kayıt oluştur () kaydeder sonra temiz ve ActiveRecord tarafından açıkça desteklenen otomatik olarak yüklenecektir çocuk, yabancı anahtar doldurur AR -- rekoru. AR üst kaydı oluşturarak bir parçası olarak çocuk kaydeder.
Nasıl yapmak için:
# in your User model...
has_one :profile
before_create :build_default_profile
private
def build_default_profile
# build default profile instance. Will use default params.
# The foreign key to the owning User model is set automatically
build_profile
true # Always return true in callbacks as the normal 'continue' state
# Assumes that the default_profile can **always** be created.
# or
# Check the validation of the profile. If it is not valid, then
# return false from the callback. Best to use a before_validation
# if doing this. View code should check the errors of the child.
# Or add the child's errors to the User model's error array of the :base
# error item
end
Bunu Paylaş:
Benim en Raylar için özel yapılandırma...
Nasıl Android Studio Kütüphanesi proje...
HTML olarak bir dize oluşturmak için n...
Nasıl denetleyicisi oluşturmak için ra...
Nasıl oluşturmak ve bir modül Ruby kul...