Rails 3.2: validates_presence_of унаследованной модели - PullRequest
1 голос
/ 02 февраля 2012

Я определил три класса:

class Animal < ActiveRecord::Base
end

class Cat < Animal
  has_many :toys
end

class Toy
  validates_presence_of :cat
  belongs_to :cat
end

Когда я создаю игрушку, которая должна принадлежать кошке с: Cat.first.toys << Toy.create!(:name => 'Toy 1')

бросает:

ActiveRecord::RecordInvalid: Validation failed: Cat can't be blank

1 Ответ

3 голосов
/ 02 февраля 2012
Cat.first.toys << Toy.create!(:name => 'Toy 1')

Последовательность кода будет выполняться следующим образом:

tmp_toy = Toy.create!(:name => 'Toy 1')
Cat.first.toys << tmp_toy

Поэтому, когда вы создаете новую игрушку, вы не указали нужного кота, который вызывает ошибку.1005 *

Вы можете использовать следующее:

Cat.first.toys.create!(:name => 'Toy 1')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...