【问题标题】:Getting Mass Assignment warning but don't know why收到批量作业警告但不知道为什么
【发布时间】:2011-08-09 07:45:00
【问题描述】:

我对以下关于批量分配的警告感到非常困惑:

WARNING: Can't mass-assign protected attributes: upload_id

这是我的上传模型:

class Upload < ActiveRecord::Base
    belongs_to :uploadable, :polymorphic => true
    attr_accessor :crop_x, :crop_y, :crop_w, :crop_h
    has_attached_file :photo, :styles => { :thumb => '40x40#', :medium => '150x150>', :large => '300x300>'}

这是我的用户模型

class User < ActiveRecord::Base

  has_one  :upload, :as => :uploadable
  attr_accessible :name, :email, :password, :password_confirmation, :birthdate, :emails, :icon_id 

模型中没有 :upload_id。

在控制器更新动作中:

def update
    @user.upload = Upload.find_by_id(params[:user][:upload_id]) 
    respond_to do |format|
      if  @user.update_attributes(:user)
        format.js
      end
    end
end

谁能告诉我为什么会出现这个错误。该应用程序有效,但我想解决此问题。

【问题讨论】:

  • 你能用这个请求发布一段日志吗?

标签: ruby-on-rails-3 mass-assignment


【解决方案1】:

在模型中,将:upload_id 添加到attr_accessible 输入,如下所示:

attr_accessible :name, :email, ... :emails, :icon_id, :upload_id

如果您希望 :upload_id 嵌套在 params 哈希中的 :user 下,则需要将其列为用户模型的可访问属性。

【讨论】:

  • 这是正确的答案!。您不能批量分配不在 attr_accessible 方法中的属性。这只是一种安全措施。否则用户可以修改 html 并设置他们想要的所有属性。
猜你喜欢
  • 2012-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-31
  • 1970-01-01
相关资源
最近更新 更多