Ruby on rails 多列属性轨道
给定Rails 3.0.3模型中的复合虚拟属性,如何将组件属性上的错误自动放置在复合属性上?例如:Ruby on rails 多列属性轨道,ruby-on-rails,Ruby On Rails,给定Rails 3.0.3模型中的复合虚拟属性,如何将组件属性上的错误自动放置在复合属性上?例如: validates_presence_of :first_name validates_presence_of :last_name def name "#{first_name} #{last_name}" end def name=(name) first_name, last_name = name.split end 给出: @model.errors[:name]=@
validates_presence_of :first_name
validates_presence_of :last_name
def name
"#{first_name} #{last_name}"
end
def name=(name)
first_name, last_name = name.split
end
给出:
@model.errors[:name]=@model.errors[:first\u name]+@model.errors[:last\u name]
请注意,这是一个简化的示例,我无法轻松地将验证从组件属性移动到复合属性的新验证方法中
另一个例子是回形针gem,其中大小(附件大小)的验证放在属性“附件”上。有什么想法吗
谢谢。就我个人而言,我不会对
名字和姓氏字段进行任何“正常”验证。相反,我会把它交给一个有能力的定制验证器:
validate :name_is_valid
def name_is_valid
if first_name.blank? || last_name.blank?
errors.add(:name, "You must specify both your first and last name")
end
end
结果是:
after_validation do
self.errors[:first_name].each do |message|
self.errors.add(:name, message)
end
self.errors[:last_name].each do |message|
self.errors.add(:name, message)
end
self.errors.delete(:first_name)
self.errors.delete(:last_name)
end
嘿,瑞安。对不起,澄清一下我的例子比上面的要复杂得多。实际上,我正在寻找一种更接近于曲别针
如何验证附件大小、附件类型等并将所有验证添加到base属性的方法(但我无法从阅读源代码中找到它)。我将更新以上内容以使其更清楚。