Rails 3保存记录问题
问题描述:
我一直在使用Rails 3.0.5和Ruby 1.9.2,并且我注意到一个新记录不会被保存或不能立即使用。Rails 3保存记录问题
例如
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和用户
答
current_user.some_records
不包含新添加的记录,因为你没有指定@some_record.users.push(current_user)
后保存操作之间的关联。 您只需在作业后添加.save
即可使用。
答
模型结构是不是从你的问题不清楚,但我们认为current_user
belongs_to
some_records
要强制数据库中读取试试这个:
current_user.some_records(true)
默认情况下forcereload = false
,重写这个你应该通过true
对不起,我的错误很大。保存在推送到关联数组后被调用。 – Sid 2011-03-27 10:40:48