获得质量分配警告但不知道原因

时间:2011-08-09 07:45:00

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

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

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

任何人都可以告诉我为什么会收到此错误。应用程序有效,但我想解决这个问题。

1 个答案:

答案 0 :(得分:3)

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

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

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