我需要为同一模型提供不同的错误消息,具体取决于表单的上下文和位置。
对于验证User
first_name
模型
我正在寻找一个干净且以最佳实践为导向的解决方案,因为我不想破解视图助手等。
任何提示都表示赞赏,谢谢
答案 0 :(得分:1)
您可以在User
模型中使用validate方法。像这样的东西
validate do |user|
if user.first_name.blank? && user.id.blank?
# id blank means the user is in registration page as he is new user.
user.errors.add(:base, "Please type your first name")
elsif user.first_name.blank?
user.errors.add(:base, "First name can't be blank")
end
end
答案 1 :(得分:1)
可能正在使用hidden_field
和attr_accessor
,我希望你能达到你想要的效果,
<%= f.hidden_field :check_form, :value => true %>
<%= f.hidden_field :check_form, :value => false %>
您还需要将check_form
值传递给模型。
attr_accessor :check_form
validates_presence_of :first_name, :if => :check_form_is_true?, :message => "First Name can't be blank"
validates_presence_of :first_name, :unless => :check_form_is_true? //here you need to use i18n oriented translation to show the custom error message
private
def check_form_is_true?
check_form == true
end
en:
activerecord:
attributes:
user:
first_name: ""
errors:
models:
user:
attributes:
first_name:
blank: "Please type your first name"
希望有所帮助:)