2010-04-04 4 views
0

Je suis en train de créer un accesseur pour un élément du tableau avec le drapeau spécifique est défini sur true:accesseur personnalisé pour un élément de tableau

class EntranceObject < ActiveRecord::Base 
    has_many :subscribers 

    def customer 
     self.subscribers.find(:first, :conditions => {:is_customer => true}) 
    end 

    def customer=(customer_params) 
    self.subscribers << Subscriber.new(:name => customer_params[:name], 
             :apartment => customer_params[:apartment], 
             :phone_number => customer_params[:phone_number], 
             :is_customer => true) 
    end 
end 

class Subscriber < ActiveRecord::Base 
    belongs_to :entrance_object 

    validates_presence_of :name, :apartment   
end 

Comment dois-je valider cette accesseur afin de champs hightlight manquants dans une vue?

P.S. Je suis novice en RoR, peut-être y at-il une autre approche à un tel travail avec un élément d'une collection? Merci.

Répondre

0

Vous pouvez avoir Rails magic faire le travail pour vous.

class EntranceObject < ActiveRecord::Base 
    has_many :subscribers 
    has_one :customer, :class_name => "Subscriber", :foreign_key => "entrance_object_id", :conditions => {:is_customer => true} 

    validates_associated :customer 
end 

Le validates_associated validera l'objet client et stocker les erreurs dans entrance_object.customer.errors (vous devrez donc faire un travail en montrant toutes les erreurs de la vue).

Voir here pour les documents sur validates_associated.

+0

c'est de la vraie magie! Merci beaucoup!(% –

Questions connexes