Rails 4.1.2 - 拒绝嵌套属性结果被忽略

时间:2015-08-31 14:08:49

标签: ruby-on-rails ruby-on-rails-4 nested-attributes

我有一个Rails表单,它有两种类型的嵌套属性:PendenciesAddress

但是,这两个字段不是必填字段,空白时应忽略:

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来确保它们正在运行,而且它们正在运行。两者都按预期返回truefalse

然而,一旦调用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不会尝试保存它们。

谢谢。

0 个答案:

没有答案