0

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

4

2 回答 2

1

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

current_user.some_records(true)

默认情况下forcereload = false,要覆盖它,您应该通过true

于 2011-03-27T10:45:43.877 回答
1
current_user.some_records 

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

于 2011-03-27T10:15:18.210 回答