2010-04-04 95 views
0

我试图从特定标志设置为true阵列创建一个元素的访问:数组元素的自定义访问

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 

我怎么需要以hightlight中缺少的字段来验证这个访问一个看法?

P.S.我是RoR的新手,也许还有另外一种方法来处理这些作品中的一个元素?谢谢。

回答

0

你可以让Rails魔术为你做这项工作。

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 

validates_associated将验证客户对象,并存储在entrance_object.customer.errors错误(所以你必须这样做了一些工作在显示视图中所有的错误)。

有关validates_associated的文档,请参见here

+0

这是真正的魔法!非常感谢!(% – 2010-04-05 15:38:20