跳过相关对象的验证 - rails activerecord

Luc*_*nan 5 validation activerecord ruby-on-rails ruby-on-rails-3

class Author
  has_many :books

  validates :email, :presence => true
end

class Book
  belongs_to :author

  validates :title, :presence => true
end
Run Code Online (Sandbox Code Playgroud)

跳过验证很简单:

a = Author.new
a.save(:validate => false)
Run Code Online (Sandbox Code Playgroud)

但是,在创建书籍而不跳过书籍验证时,我需要跳过作者验证,如下所示:

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

b.author = Author.last
b.save
Run Code Online (Sandbox Code Playgroud)

had*_*ade 0

我完全不明白你的问题。在您的示例中,您没有创建任何新的作者对象:

>     b = Book.new
>     b.title = "A Book"
>     
>     b.author = Author.last
>     b.save
Run Code Online (Sandbox Code Playgroud)

如果您尝试在没有电子邮件的情况下创建新作者,您不能这样做:

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

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

b.author = author
b.save
Run Code Online (Sandbox Code Playgroud)

嗯...也许我只是在这里遗漏了一些明显的东西。