Пропустить проверку для связанных объектов - рельсы activerecord - PullRequest
5 голосов
/ 30 ноября 2010
class Author
  has_many :books

  validates :email, :presence => true
end

class Book
  belongs_to :author

  validates :title, :presence => true
end

Пропускать проверки легко:

a = Author.new
a.save(:validate => false)

Однако мне нужно пропустить проверки авторов при создании книги, не пропуская проверки книг, например:

b = Book.new
b.title = "A Book"

b.author = Author.last
b.save

Ответы [ 2 ]

0 голосов
/ 25 мая 2012

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

class Book
  belongs_to :author, :validate => false

  validates :title, :presence => true
end

Таким образом, проверки авторов будут пропущены при сохранении.

0 голосов
/ 30 ноября 2010

Я совсем не понял вашего вопроса. В вашем примере вы не создаете новый авторский объект:

>     b = Book.new
>     b.title = "A Book"
>     
>     b.author = Author.last
>     b.save

Если вы пытаетесь создать нового автора без электронной почты, вы не можете просто сделать:

b = Book.new
b.title = "A Book"

author = Author.new
author.save(:validate => false)

b.author = author
b.save

Хм ... может быть, я просто упускаю что-то очевидное здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...