带有Devise的Rails 4:update_attributes不起作用

时间:2014-07-17 17:37:43

标签: ruby-on-rails activerecord ruby-on-rails-4 devise sql-update


我在更新current_user属性时遇到问题 这是我的控制器:

class BuildingsController < ApplicationController    
def create
        # ---- many_things
        #current_user.user_info.money = 1000
        current_user.user_info.update_attributes!(money: 100)
        #current_user.user_info.money = 1000 --- why not 100?
        # ---- many_things
    end
end

这是我的模特:

class User < ActiveRecord::Base
  has_one :user_info
  before_create :initialize_user

  def initialize_user
    self.create_user_info!(money:1000,level:1)
  end
end

UserInfo模型为空白:

class UserInfo < ActiveRecord::Base
end

update_attributes不会抛出任何异常,似乎它不会保存记录。

有什么想法吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

你是想把钱定在100美元还是1000美元?如果您正在设置并同时重置money属性。

在create中调用代码块时,如果将值设置为$ 100。之后,在模型中,您有一个后回调:after_create运行initialize_user,它将money的值设置为$ 1,000。也许你想在create之前进行回调?