我有一个Rails表单,它有两种类型的嵌套属性:Pendencies
和Address
。
但是,这两个字段不是必填字段,空白时应忽略:
accepts_nested_attributes_for :pendencies, allow_destroy: true,
reject_if: proc { |attributes|
attributes['status'].blank? &&
attributes['description'].blank? &&
(attributes['pendency_type'].blank? || attributes['pendency_type'] == 0) }
accepts_nested_attributes_for :address, allow_destroy: true,
reject_if: proc { |attributes|
attributes['zipcode'].blank? &&
attributes['street'].blank? &&
(attributes['number'].blank? || attributes['number'] <= 0) &&
attributes['neighbour'].blank? &&
attributes['city'].blank? &&
attributes['state'].blank? }
我在binding.pry
上使用了proc
来确保它们正在运行,而且它们正在运行。两者都按预期返回true
或false
。
然而,一旦调用model.update
时保持这些关联的模型得到验证,它就会返回有关它应该忽略的完全相同字段的错误:
@messages=
{:"pendencies.status"=>["não pode ficar em branco"],
:"pendencies.description"=>["não pode ficar em branco"],
:"pendencies.pendency_type"=>["não pode ficar em branco"],
:"address.zipcode"=>["não pode ficar em branco", "não é válido", "não possui o tamanho esperado (8 caracteres)"],
:"address.street"=>["não pode ficar em branco", "é muito curto (mínimo: 3 caracteres)"],
:"address.number"=>["não pode ficar em branco", "não é um número", "é muito curto (mínimo: 1 caracteres)"],
:"address.city"=>["não pode ficar em branco", "é muito curto (mínimo: 2 caracteres)"],
:"address.state"=>["não pode ficar em branco", "é muito curto (mínimo: 2 caracteres)"]}>
对于消息中的PT-BR,很抱歉,长度很短且字段无效。
我想知道如何忽略这些嵌套属性,因此Rails不会尝试保存它们。
谢谢。