我的模型及其关联是:
class Post < ActiveRecord::Base
has_many :comments
end
class Comment < ActiveRecord::Base
belongs_to :post
validates :commenter, :presence => true
end
案例1:当我尝试下面的代码时,调用了自动保存方法。
@post = Post.find(3)
@comments = @post.comments
p @comments #=> []
p @comments.class #=> Array
if @comments.empty?
3.times do
@comments << @post.comments.build
end
end
p @comments.first.errors #=>{:commenter=>["can't be blank"]}
案例2:如果我手动将相同的空数组初始化为@comments,则不会调用自动保存。例如,
p @comments #=> []
p @comments.class #=> Array
if @comments.empty?
@comments = []
p @comments #=> []
3.times do
@comments << @post.comments.build
end
end
p @comments.first.errors #=>{}
避免自动保存的最佳解决方案是什么,请任何人解释为什么上述代码的行为不同?