Я думаю, что вложение не сохраняется в базе данных из-за этого предупреждения. Я пробовал разные варианты атрибутов attr_accessible, но я всегда получаю это предупреждение или ошибку "неизвестный атрибут: upfile". Итак, мой код:
post.rb
class Post < ActiveRecord::Base
has_many :comments, :as => :commentable
belongs_to :user
has_many :attaches, :as => :uploadable, :dependent => :destroy
attr_accessible :title, :body, :commentable, :attach_attributes
accepts_nested_attributes_for :attaches
end
attach.rb:
require 'paperclip'
class Attach < ActiveRecord::Base
belongs_to :uploadable, :polymorphic => true
has_attached_file :upfile
attr_accessible :upfile
end
предупреждение:
Parameters: {"utf8"=>"✓", "authenticity_token"=>"m+81lxu25R0Fu2bHUJthIBU265V+kDo+6wcL3BcFwoc=", "post"=>{"title"=>"sdfsdfsdf", "body"=>"sdfdsfsdfsd", "commentable"=>"0", "upfile"=>#<ActionDispatch::Http::UploadedFile:0x00000003d35290 @original_filename="www.rubyonrails (1).com", @content_type="application/octet-stream", @headers="Content-Disposition: form-data; name=\"post[upfile]\"; filename=\"www.rubyonrails (1).com\"\r\nContent-Type: application/octet-stream\r\n", @tempfile=#<File:/tmp/RackMultipart20120201-2498-1ef2jve>>}, "commit"=>"Submit"}
WARNING: Can't mass-assign protected attributes: upfile
Если я изменю attr_accessible, например, на ": title,: body,: commentable,: upfile", я получу эту ошибку:
Parameters: {"utf8"=>"✓", "authenticity_token"=>"m+81lxu25R0Fu2bHUJthIBU265V+kDo+6wcL3BcFwoc=", "post"=>{"title"=>"dfsdf", "body"=>"sdfsdfsdf", "commentable"=>"0", "upfile"=>#<ActionDispatch::Http::UploadedFile:0x007f011c0559f0 @original_filename="www.rubyonrails (1).com", @content_type="application/octet-stream", @headers="Content-Disposition: form-data; name=\"post[upfile]\"; filename=\"www.rubyonrails (1).com\"\r\nContent-Type: application/octet-stream\r\n", @tempfile=#<File:/tmp/RackMultipart20120201-2498-qvfih5>>}, "commit"=>"Submit"}
Completed 500 Internal Server Error in 4ms
ActiveRecord::UnknownAttributeError (unknown attribute: upfile):
Использование ruby 1.9.3, рельсов 3.2.0, скрепки 2.5.2