我正在尝试为特定标志设置为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
我如何验证此访问者以突出显示视图中缺少的字段?
P.S。我是RoR的新手,也许还有另一种方法可以使用集合中的一个元素进行此类工作?感谢。
答案 0 :(得分: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。