Как проверить существующую недействительную модель через вложенные атрибуты? - PullRequest
0 голосов
/ 27 марта 2012

Похоже, что Rails будет проверять существующую недопустимую вложенную модель, только если атрибуты вложенной модели изменились.

Для следующих моделей:

class Person < ActiveRecord::Base
  has_many :addresses
  accepts_nested_attributes_for :addresses
end

class Address < ActiveRecord::Base
  belongs_to :person
  validates_presence_of :street
end

Следующий код, например, сохранити верните true:

p = Person.first
p.update_attributes({:first_name => "Bryan", :addresses_attributes=>{"0"=>{:street=>"", :id => 1}})

Есть ли способ проверить вложенную модель, как если бы ее атрибуты изменились?(при сохранении ошибок)

1 Ответ

1 голос
/ 27 марта 2012

Это работает для меня - вот тестовый пример, который я создал, чтобы доказать это

require 'test_helper'

class PersonTest < ActiveSupport::TestCase

  test "update address" do
    expected_new_address="pandascout"
    person = Person.create(name: "jwo")
    address = person.addresses.create(street: "123 Elm")

    person.update_attributes({:addresses_attributes=>{"0"=>{:street=>expected_new_address, :id=>address.id}}})
    assert_equal expected_new_address, person.addresses.first.street
  end
end

Единственное, о чем я могу подумать, это то, что у вас есть ссылка на «адрес», и вам нужно перезагрузить его.

...