ruby-on-rails rails -如何指定kt-paperclip gem计算校验和的列

py49o6xq  于 2023-08-08  发布在  Ruby
关注(0)|答案(1)|浏览(111)

我使用paperclip gem中的has_attached_file来计算文件内容的校验和。默认情况下,这个计算将应用于具有名称指纹的列,但问题是,我有两个列必须在名称中具有“指纹”。有没有办法指定回形针应该在哪一列中计算校验和?
这是我尝试过

has_attached_file(
    :file,
{
    hash_digest: Digest::SHA256,
    hash_digest_column: :original_file_fingerprint
 }
)

字符串
但什么都没有更新。有什么想法吗?https://github.com/thoughtbot/paperclip#checksum--fingerprint

k4emjkb1

k4emjkb11#

因此,首先,有多个列以_fingerprint结尾是没有问题的,Paperclip只使用以附件命名的列,即。file_fingerprint用于has_attached_file :file
其次,Paperclip实际上并不关心列,它关心的是属性getter/setter,所以如果你必须遵守一些旧数据库模式,使用file_fingerprint来做其他的东西,那么你总是可以重新定义属性方法来使用不同的列。
根据您是否仍然需要从Rails模型访问(实际的)file_fingerprint,有两个选项。
如果您不需要访问它:

alias_attribute :file_fingerprint, :original_file_fingerprint

字符串
如果你这样做了(这些不会改变/改变Rails DB查询语法,比如createupdatewhere子句等):

def file_fingerprint
  self[:original_file_fingerprint]
end

def file_fingerprint= v
  self[:original_file_fingerprint] = v
end

相关问题