使用validates_associated重复的错误消息

Heg*_*win 2 ruby-on-rails

这是两个类,1:n关系

class Company < AR::Base
  has_many :brands
  validates_associated :brands
end

class Brand < AR::Base
  belongs_to :company
  validates_presence_of :name
end
Run Code Online (Sandbox Code Playgroud)

我尝试为公司添加品牌.如果品牌名称为空,则会向我提供重复的错误消息.

c = Company.find(1)
c.valid?
# => true
c.brands.new
# => #<Brand id: nil, name: nil, company_id: 1, created_at: nil, updated_at: nil>
c.valid?
#=> false
c.errors.full_message
#=> ["Brands is invalid", "Brands is invalid"]
c.brands.last.errors.full_message
#=> ["Name required"]
Run Code Online (Sandbox Code Playgroud)

小智 7

验证关联可以通过两种方式实现
First Option Simple:

has_many :brands, validate: true
Run Code Online (Sandbox Code Playgroud)

第二个选项使用validates_associated,这将导致重复的错误消息,并且可以通过显式设置validate为false来避免:

has_many :brands, validate: false
validates_associated :brands
Run Code Online (Sandbox Code Playgroud)

注意:
如果您需要任何其他选项,例如validates_associated,您可以选择第二个选项:if,:除非等...否则请使用不会导致重复错误的第一个选项.