我一直在使用 Rails 3.0.5 和 Ruby 1.9.2,我注意到新记录没有保存或无法立即使用。
例如
def create
@some_record = Pool.new(params[:pool])
@some_record.users.push(current_user)
if params[:commit] == "Add More"
@some_record.save
@some_record.do_something
elsif params[:commit] == "Save"
do_something_else(params)
elsif params[:commit] == 'Cancel'
redirect_to user_url(current_user)
end
redirect_to some_other_url(current_user)
end
因此,当我保存记录并调用some_record.do_something
保存的对象时,不能立即使用。current_user.some_records
不包含新添加的记录,但current_user.some_records.all
显示新保存的记录。但是在控制台上,我可以使用 . 查看新创建的记录current_user.some_records
。
我确定我缺少 Rails 3 的基本内容。我也尝试过同样的current_user.some_records.build(params[:some_record]
方法,但我遇到了同样的问题。Rails 3 是立即保存对象还是存在某种延迟写入/保存,因为 Rails 3.0.3 不会出现同样的问题。
此外,我没有使用像 authlogic/devise 这样的身份验证插件,我只是将 current_user 对象保存到会话中。我不确定我做错了什么。希望有任何帮助吗?
它也是 some_record 和用户之间的多对多关联