Rails:关于列名称的回形针问题

时间:2010-11-07 01:33:07

标签: ruby-on-rails paperclip

我有两种使用Paperclip的方案,但我不确定如何调整设置或是否可能甚至是必要的。需要更多经验丰富的专业人士的建议。

首先,我有一个用于上传的文档模型,例如PDF,将被定义:

has_attached_file :document...

这会给我一些像@ document.document_file_name这样的列名。无论如何,我可以改为使用@ document.file_name吗?

其次,我有Gallery.rb,它有很多Picture.rb。同样的情况也在这里。我可以避免使用@ picture.picture_file_name吗?或者这是否应该被Paperclip提供的收益所忽视。

提前感谢任何输入。

3 个答案:

答案 0 :(得分:3)

我对此的看法:实际文档(PDF文件)与文档记录(包含物理文档和元数据)不同。因此,将Paperclip附件视为模型的属性并在属性之后调用其方法,而不是对模型记录本身进行操作是有意义的。

我的一个应用程序的Document模型也带有附件,我只是调用属性attachment

如果这对您造成太大的不便,您可以随时在模型中实现自己的getter:

class Document < ActiveRecord::Base
  has_attached_file :attachment    # ... or whatever you are calling it

  def file_name
    self.attachment.file_name
  end

  def file_size
    self.attachment.file_size
  end

  def file_type
    self.attachment.file_type
  end
end

答案 1 :(得分:1)

Paperclip gem在关联对象上需要三个属性。

  1. attribute_file_name
  2. attribute_file_size
  3. attribute_file_type
  4. attribute当然,如果您的文件名称是has_attached_file :attribute,通常称为图片,图片等等。

    如果您想更改其中一个名称,您需要编辑gem本身,这对于更改属性名称似乎很疯狂:)

答案 2 :(得分:0)

以下是我必须创建的方法:

{attribute}_file_name
{attribute}_file_size
{attribute}_content_type
{attribute}_updated_at