1

ペーパークリップをMiniExiftoolで動作させようとしています。

私はついにこれを書きました:


# Photo model

  belongs_to :user

  has_attached_file :picture

  after_picture_post_process :copy_exif_data

private

  def copy_exif_data
    exif = MiniExiftool.new picture.queued_for_write[:original].path
    self.date = exif['date_time_original']

    save!
  end

私は得る:

Mysql :: Error:列'user_id'をnullにすることはできません...

保存せずに!すべて正常に機能しますが、self.dateはnullのままです(exif ['date_time_original']がnullでなくても)。

本当に欲求不満です。ペーパークリップをMiniExiftoolで動作させるにはどうすればよいですか?

4

1 に答える 1

0

確かではありませんが、exif['date_time_original'] が日付または文字列を提供しているかどうか、文字列の場合は適切に解析できるかどうかを確認できます。

あなたも使ってみてください

update_attribute(:date, exif['date_time_original'])

代わりに

self.date = exif['date_time_original']
save!

これは検証をバイパスし、更新された属性を保存するだけです。

于 2009-08-19T14:34:12.947 に答える