数组元素的自定义访问
问题描述:
我试图从特定标志设置为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的新手,也许还有另外一种方法来处理这些作品中的一个元素?谢谢。
答
你可以让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。
这是真正的魔法!非常感谢!(% – 2010-04-05 15:38:20