class User < ApplicationRecord
has_many :books
delegate :title,:pages,:paragraphs to: book_attributes
end
class Book < ApplicationRecord
belongs_to :user
validates :title, length: { maximum: 35}
end
当我使用相关书籍创建用户时,即使书籍验证错误,即我创建一个超过35个字符的标题,用户也会被保存。
如何确保在验证用户时不会保存用户 书模型失败了。
答案 0 :(得分:0)
ActiveRecord::Base.transaction do
user = User.new(user_params)
book = Book.new(book_params)
user.save!
book.save!
end
有趣的是,您的用户依赖于书籍才能创建,但您可以在Rails中使用Transaction。如果没有在块中引发异常,则仅保存到DB。