Rails +单表继承:如何自定义验证错误消息?

大potate

我有一个家长班:

class Address < ActiveRecord::Base
  ...
  validates_presence_of :first_name
  validates_presence_of :last_name
  validates_presence_of :street_address
  validates_presence_of :street_address2
  validates_presence_of :zip_code
  validates_presence_of :city
  validates_presence_of :state_id
  validates_presence_of :phone_number

end

还有两个子类:

class ShippingAddress < Address
end


class BillingAddress < Address
end

但是,当我在表单上创建无效记录时(一次创建两个记录),ShippingAddress和BillingAddress的验证错误是相同的,我不希望这样做:

First name can't be blank
First name can't be blank
Last name can't be blank
Last name can't be blank
Street address can't be blank
Street address can't be blank
Street address2 can't be blank
Street address2 can't be blank
Zip code can't be blank
Zip code can't be blank
City can't be blank
City can't be blank
Phone number can't be blank
Phone number can't be blank

我如何在验证错误前加上类名like "Shipping address first name can't be blank"

==更新==

尝试时Yoshi的答案无效:

class Address < ActiveRecord::Base  
  validates_presence_of :first_name, message: I18n.t("activerecord.errors.models.#{self.model_name.to_s.underscore}.attributes.first_name")




Nets-Mac-Pro:ilook emai$ be rails c
Loading development environment (Rails 4.1.1)
irb(main):001:0> s = ShippingAddress.new
=> #<ShippingAddress id: nil, first_name: nil, last_name: nil, street_address: nil, street_address2: nil, zip_code: nil, phone_number: nil, created_at: nil, updated_at: nil, state_id: nil, city: nil, type: "ShippingAddress", order_id: nil>
irb(main):002:0> s.valid?
=> false
irb(main):003:0> s.errors.full_messages
=> ["First name translation missing: en.activerecord.errors.models.address.attributes.first_name", "Last name can't be blank", "Street address can't be blank", "Street address2 can't be blank", "Zip code can't be blank", "City can't be blank", "State can't be blank", "Phone number can't be blank"]

它说模型名称是Address而不是ShippingAddress。我猜这是渴望加载。

阿哈努比斯

Rails用于human_attribute_name将属性名称转换为人类可读的形式。您可以尝试在中重写此类方法,ShippingAddressBillingAddress避免必须在区域设置文件中指定每个验证消息。

class ShippingAddress < Address
  def self.human_attribute_name(*args, &block)
    "Shipping address #{ super }"
  end
end

class BillingAddress < Address
  def self.human_attribute_name(*args, &block)
    "Billing address #{ super }"
  end
end

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Rails 4:从自定义验证器中的错误消息中删除属性名称

来自分类Dev

关于另一个模型的属性的Rails自定义验证错误消息

来自分类Dev

Rails验证不接受自定义消息

来自分类Dev

Rails:无效的单表继承类型错误

来自分类Dev

Rails自定义验证

来自分类Dev

Rails 4.2 ActionController:BadRequest自定义错误消息

来自分类Dev

Rails 4,添加自定义布局,收到错误消息

来自分类Dev

验证错误的自定义错误消息:在rails上的ruby上的validates_length_of:maximum和:minimum

来自分类Dev

Ruby on Rails:字段为空时如何自定义MailForm的错误消息

来自分类Dev

如何通过 ajax 请求以模式显示任何自定义错误消息 Ruby on Rails

来自分类Dev

自定义Rails验证消息(不显示属性名称)Rails 4

来自分类Dev

自定义Rails验证消息(不显示属性名称)Rails 4

来自分类Dev

Rails单表继承模型中的覆盖验证

来自分类Dev

Rails单表继承模型中的覆盖验证

来自分类Dev

Rails单表继承关系

来自分类Dev

Rails自定义验证无法识别

来自分类Dev

Rails 4自定义验证

来自分类Dev

Rails的自定义验证无法识别

来自分类Dev

Rails 4+:在何处存储跨模型使用的自定义验证消息

来自分类Dev

Rails-为输入字段(前端)设置自定义验证消息

来自分类Dev

rails 4:404、500的自定义错误页面,默认的500错误消息来自何处?

来自分类Dev

Rails转换自定义基本错误

来自分类Dev

Rails转换自定义基本错误

来自分类Dev

Rails 4自定义json错误

来自分类Dev

Rails自定义错误记录

来自分类Dev

Rails的自定义验证,用于数组返回未定义的方法错误

来自分类Dev

Rails控制器-继承自定义动作

来自分类Dev

Rails控制器-继承自定义动作

来自分类Dev

Rails控制器-继承自定义操作

Related 相关文章

  1. 1

    Rails 4:从自定义验证器中的错误消息中删除属性名称

  2. 2

    关于另一个模型的属性的Rails自定义验证错误消息

  3. 3

    Rails验证不接受自定义消息

  4. 4

    Rails:无效的单表继承类型错误

  5. 5

    Rails自定义验证

  6. 6

    Rails 4.2 ActionController:BadRequest自定义错误消息

  7. 7

    Rails 4,添加自定义布局,收到错误消息

  8. 8

    验证错误的自定义错误消息:在rails上的ruby上的validates_length_of:maximum和:minimum

  9. 9

    Ruby on Rails:字段为空时如何自定义MailForm的错误消息

  10. 10

    如何通过 ajax 请求以模式显示任何自定义错误消息 Ruby on Rails

  11. 11

    自定义Rails验证消息(不显示属性名称)Rails 4

  12. 12

    自定义Rails验证消息(不显示属性名称)Rails 4

  13. 13

    Rails单表继承模型中的覆盖验证

  14. 14

    Rails单表继承模型中的覆盖验证

  15. 15

    Rails单表继承关系

  16. 16

    Rails自定义验证无法识别

  17. 17

    Rails 4自定义验证

  18. 18

    Rails的自定义验证无法识别

  19. 19

    Rails 4+:在何处存储跨模型使用的自定义验证消息

  20. 20

    Rails-为输入字段(前端)设置自定义验证消息

  21. 21

    rails 4:404、500的自定义错误页面,默认的500错误消息来自何处?

  22. 22

    Rails转换自定义基本错误

  23. 23

    Rails转换自定义基本错误

  24. 24

    Rails 4自定义json错误

  25. 25

    Rails自定义错误记录

  26. 26

    Rails的自定义验证,用于数组返回未定义的方法错误

  27. 27

    Rails控制器-继承自定义动作

  28. 28

    Rails控制器-继承自定义动作

  29. 29

    Rails控制器-继承自定义操作

热门标签

归档