【发布时间】:2014-07-09 02:46:24
【问题描述】:
我有一个父类:
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
如何在验证错误前面加上 "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。我猜这是急切的加载。
【问题讨论】:
标签: ruby-on-rails