Rails 3保存了记录问题

时间:2011-03-27 10:06:42

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

我一直在使用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和用户之间的多对多关联

2 个答案:

答案 0 :(得分:1)

current_user.some_records 

不包含新添加的记录,因为您在分配@some_record.users.push(current_user)后未保存操作。 您所要做的就是在分配后添加.save,它应该可以正常工作。

答案 1 :(得分:1)

您的问题并不清楚模型结构,但我们假设current_user belongs_to some_records 要强制数据库读取,请尝试以下操作:

current_user.some_records(true)

默认情况下forcereload = false,要覆盖此内容,您应该传递true

相关问题