-4

/cloth/createにPOSTを実行すると警告が表示されます:保護された属性を一括割り当てできません:title、description、cloth_type、pic

布.rb

class Cloth   
  include Mongoid::Document   
  include Mongoid::Timestamps 
  include Mongoid::MultiParameterAttributes   attr_accessible :pics

  field :title   
  field :description   
  field :cloth_type   
  belongs_to :seller   
  has_many :pics

  attr_accessible :pic_attributes   
  accepts_nested_attributes_for:pics
end

pic.rb

class Pic   
  include Mongoid::Document
  include Mongoid::Paperclip  

  has_mongoid_attached_file :image, :styles => { :medium => "300x300>", :thumb => "100x100>" },
  :storage => :cloud_files,
  :cloudfiles_credentials =>  "#{Rails.root}/config/rackspace.yml",
  :path => ":attachment/:id/:timestamp_:style.:extension"

  belongs_to :cloth
  attr_accessible :cloth_attributes

  def create        
    @cloth = Cloth.create!(params[:cloth])  
  end
end
4

1 に答える 1

6

答えはここにあります:http://api.rubyonrails.org/classes/ActiveModel/MassAssignmentSecurity/ClassMethods.html#method-i-attr_accessible

しかし、私は解明します。

を設定することによりattr_accessible :pic_attributes、一括割当を介して設定できる属性のホワイトリストを設定します。言い換えれば、あなたはあなたがリストした属性だけがのようなことをすることによって設定されることができると言っていますcloth = Cloth.new(params[:cloth])。あなたが言っている他の属性は、などのアクセサを使用して設定する必要がありますcloth.title = params[:title]

が必要な場合はattr_accessible、他の属性をリストに追加します。

attr_accessible :pic_attributes, :title, :description, etc ...
于 2013-01-03T15:42:01.160 に答える