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

时间:2010-11-30 12:28:59

标签: ruby-on-rails validation activerecord ruby-on-rails-3

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 :(得分:0)

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

>     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
嗯......也许我只是错过了一些明显的东西。

答案 1 :(得分:0)

由于在保存模型时作者验证似乎不那么重要,您可以像这样编写Book模型:

class Book
  belongs_to :author, :validate => false

  validates :title, :presence => true
end

这样,在保存时将跳过作者验证。