5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Unscopedなmodelに対してcarrierwaveを使う方法

Last updated at Posted at 2014-10-17

解決方法を見つけるまでに8時間位かかったので、ここで共有します。

#問題

unscopedなモデルに対してcarrierwaveを使ってデータをアップロードしようとすると、こんなエラーが出ます。

Couldn't find [class name] with id= ...(省略)

#解決方法

find_previous_model_for_#{column}をoverrideします。
今回の例ではJobクラスにfileをアップロードしています。

app/models/job.rb
  mount_uploader :file, :FileUploader

  default_scope { where(opened: true).order(:id.desc) }

  def find_previous_model_for_file
    self.class.unscoped.find(to_key.first)
  end

carrerwaveはfind_previous_model_for_#{column}self.class.find(to_key.first)を呼んでいますが、そこをself.class.unscoped.find(to_key.first)にoverrideします。

以上です。
クラスではなく、carrierwaveをoverriedeする方法が分かる方がいらっしゃったら、教えて頂けると嬉しいです。

#参考
https://github.com/carrierwaveuploader/carrierwave/issues/696

5
5
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?