2016-04-14 27 views
0

içinde hangi modele bağlı olduğuna bağlı olarak bir polimorfik modelin niteliğini doğrulayın Temel olarak üç modelim var: bir Profile model, bir Staff model ve bir Client modeli.Rails 4

Staff için Profile model oluşturulduysa, çalışan en az 18 yıl önce olmalıdır. (Yaşı kontrol etmek için bir validates_date yardımcı yöntemini kullanıyorum, aşağıya bakın) Client için Profile model oluşturulduysa, o zaman yaş kısıtlaması yoktur.

Bu nasıl başarılır?

Profile.rb:

class Profile < ActiveRecord::Base 
    belongs_to :profileable, polymorphic: true 
    validates_date  :date_of_birth, :before => 16.years.ago 
end 

Staff.rb:

class Staff < ActiveRecord::Base 
    has_one :profile, as: :profileable, :dependent => :destroy 
end 

Client.rb:

class Client < ActiveRecord::Base 
    has_one :profile, as: :profileable, :dependent => :destroy 
end 

cevap

1

koşullu doğrulamayı deneyin

class Profile < ActiveRecord::Base 
    STAFF = 'Staff'.freeze 

    belongs_to :profileable, polymorphic: true 
    validates_date :date_of_birth, before: 18.years.ago, if: staff? 

    def staff? 
    profileable_type == STAFF 
    end 
end