【发布时间】:2013-08-30 19:52:26
【问题描述】:
更新
很确定我的问题是由一些错误引起的,它不允许我在 issue.rb 模型中仅使用带有主要 attr_accesible: cover 的回形针。
我收到此错误:
Issue model missing required attr_accessor for 'cover_file_name'
所以这可能是由于 mass_assignment 的安全更改导致的某种回形针错误??
原来的问题
我有一个带有 Paperclip 3(Gemfile.lock 中的 3.4.2)的新 rails 项目(3.2.13)。我正在尝试通过问题模型中的回形针上传文件。它们保存到文件系统,但不保存到对象或数据库。
我已经尝试了所有尝试保存这些的组合(我认为)。
相关代码:
issues_controller.rb
def create
@issue = Issue.new
@issue.attributes = params[:issue]
respond_to do |format|
if @issue.save
format.html { redirect_to @issue, notice: 'Issue was successfully created.' }
format.json { render json: @issue, status: :created, location: @issue }
else
format.html { render action: "new" }
format.json { render json: @issue.errors, status: :unprocessable_entity }
end
end
end
表格:
<%= form_for @issue, :multipart => true, :method => :post do |f| %>
....
<%= f.file_field :cover %>
型号:
class Issue < ActiveRecord::Base
has_many :pages
attr_accessible :number, :name, :cover
has_attached_file :cover, :styles => { :medium => "300x300>"}, :default_url => "/images/:style/missing.png"
attr_accessor :cover_file_name, :cover_content_type, :cover_file_size, :cover_updated_at
validates_attachment :cover, :presence => true
end
我想我已经查看了有关 Stackoverflow 的所有其他回形针问题建议。 ImageMagick 正在运行并且是最新的。保存时我没有收到任何错误,并且文件在文件系统中正确显示。我的调试语句输出显示文件名并说:
/system/issues/covers//original/image_name.jpg?1377891456
[paperclip] Saving attachments.
但也显示 DB 值的空值:
SQL (1.4ms) INSERT INTO `issues` (`cover_image_content_type`, `cover_image_file_name`, `cover_image_file_size`, `cover_image_updated_at`, `created_at`, `name`, `number`, `updated_at`) VALUES (NULL, NULL, NULL, NULL, '2013-08-30 19:49:54', 'Test', 'JPEG 30', '2013-08-30 19:49:54')
想法?建议? TIA。
【问题讨论】:
-
为什么要手动添加所有回形针方法?并创建附件?
-
删除@issue.cover = params[:issue][:cover],回形针为你做了这些花哨的东西。
-
这是在调试时添加的,但它没有为我保存。我会尝试再次删除它。
-
@AndrewWei 删除手动调用(我将在上面更新)有同样的问题。
@issue.attributes = params[:issue]现在是电话。以前是Issue.new(params[:issue])和同样的问题。 -
@DaveNewton 添加到模型的 attr_accessors 中,因为尝试保存时出错。再次尝试删除并再次出现错误。
标签: ruby-on-rails ruby paperclip