イメージのアップロード用にcarrierwave gemがインストールされています。 value_type
が3
に等しいをvalues
に適用する必要があります。ここで私が試したことがあります。Rails - モデルにifステートメントを挿入するにはどうすればよいですか?
以下のコードではエラーは発生しませんが、ifステートメントが存在しないかのように違いはありません。
mount_uploader :value, CheckItemValueImageUploader, if: 'value_type == 3'
Iは非画像タイプ(3以外value_type
有するもの)のために働くが、#<ActionDispatch::Http::UploadedFile:0x007fe74b2e2e28>
代わりにimage-name.png
if :value_type == 3
mount_uploader :value, CheckItemValueImageUploader
else
end
として画像を保存し、それ以下のコードを試して、私はまた、これもこの試み最初の試みのように、if条件が適用されていないかのように無視されます。
mount_uploader :value, CheckItemValueImageUploader, if: :image?
def image?
self.value_type == 3
end
イメージmount_uploader :value, CheckItemValueImageUploader
は画像を保存しますが、その他の値の型は保存しません(テキストなど)。if文でこれを修正する必要があります。私はなぜ2番目のオプションdoesntの仕事を知っていないが、私はレールの知識の私の範囲外のいくつかのランダムな理由を確信しています。私は実際にここに誰かが実用的な解決策を持つことを望んでいます。
私は '、if:proc {| o | o.value_type == 3} 'しかし、何もしなかった(私が持っていた最初と3回目と同じ)。値を持つ 'items'を持っているので、必要です。これらの値は、長いスラブのテキスト、1つか2つの単語、リンクなど、それらが保持する情報によって変わることがあります(' value_type'は、私はアイテムのためにアップロードされる画像の能力を値として追加しています。もし私がそれのためにまったく新しい列を作るなら、それは多くのコアコーディングの変更を引き起こすでしょう。パス – Rob
残念ながら、この時点でSTIを実装するには遅すぎます。私は多くのコーディングをやり直す必要があります。なぜ、if:proc {| o | o.value_type == 3} 'は動作しませんか?または私の他の方法は働かない。それが働いていない理由を知ってうれしいので、私はそれが終わりかどうか、あるいは希望があるかどうかを知っています。 – Rob
私の答えに_if_オプションが機能しない理由が説明されています。どの値/ procを_if_に渡すかは関係ありませんが、 'mount_uploader'メソッドはそれを使用しません。私はSTIの使用について@МалъСкрылевъの意見を2番目にします。 –