2012-05-30 30 views
-1

有一个在sys_log模型来定义我们的轨道3.1.4应用程序的质量分配:为什么质量分配代码不起作用

attr_accessible :log_date, :user_name, :user_id, :user_ip, :action_logged, :as => :new_log 

的方法是在application_controller定义保存日志:

def sys_logger(action_logged) 
    log = SysLog.new(:log_date => Time.now, :user_id => session[:user_id], :user_name => session[:user_name], :user_ip => session[:user_ip], 
        :action_logged => action_logged, :as => :new_log) 
    log.save 
    end 

然而,质量分配不工作。下面是警告消息:

WARNING: Can't mass-assign protected attributes: log_date, user_id, user_name, 
user_ip, action_logged, as 

:定义new_log不工作。上面的代码有什么问题?非常感谢。

+0

我会猜查找该报警信息会产生有用的结果... – 2012-05-30 04:20:36

回答

1

:as => :new_log现在是属性的哈希值的一部分,而不是你在通过一个单独的选项

添加一些大括号应该帮助:

def sys_logger(action_logged) 
    log = SysLog.new({:log_date => Time.now, :user_id => session[:user_id], 
        :user_name => session[:user_name], :user_ip => session[:user_ip], 
        :action_logged => action_logged }, :as => :new_log) 
    log.save 
end 

或暂时分配给它:

def sys_logger(action_logged) 
    attrs = { :log_date => Time.now, :user_id => session[:user_id], 
      :user_name => session[:user_name], :user_ip => session[:user_ip], 
      :action_logged => action_logged } 
    log = SysLog.new(attrs, :as => :new_log) 
    log.save 
end 
+0

作品般的魅力。谢谢。我们已经错过是红宝石哈希应该是用大括号。或作为像PARAMS一个变种:用于控制器质量分配[模型名称]。再次感谢。 – user938363

相关问题