私のレールアプリケーションには2つのモデル、ギャラリー、写真があります。ギャラリーには多くの写真と写真が1つのギャラリーに所属しています。レールは関連する関連付けをロードせずにモデルを見つける
写真を削除すると、レールにもギャラリーがロードされていることがわかりました。これは必要ありません。追加されたデータベースクエリです。
削除する写真がfind
の場合、@photo = Photo.find(params[:id])
を使用します。これにより、関連付けがロードされます。
@photo = Photo.find(params[:id], :include => :gallery)
があり、ギャラリーを読み込むように指示しています。これとは逆のことは何ですか?私は、次のことを試してみました:
@photo = Photo.find(params[:id], :include => [])
@photo = Photo.find(params[:id], :include => nil)
私も写真を削除するために、私は必要なフィールドだけを選択しようとしましたが、ファイルのパスが基づいているので、私は実際のファイルを削除するために、gallery_id
を必要としますギャラリーから外す。これでギャラリーがロードされます。
編集: 私Photo
モデルは次のようになります。
class Photo < ActiveRecord::Base
belongs_to :gallery
mount_uploader :file, PhotoUploader
end
mount_uploader
がcarrierwaveからです。私はそれに次のコードを持つアップローダーを持っています:
def store_dir_base
"galleries/#{model.gallery.id}/"
end
それは犯人かもしれませんか?
ありがとうございます!
これは私が見るのと同じ動作ではありません。おそらくあなたのモデルにアソシエーションを強制的にロードする何かがありますか? – zetetic
zeteticに何が追加されているか。あなたはあなたが投稿しているものより多くのコードを逃していないと確信していますか?あなたはgallery_idにファイルを削除する必要があると言いますが、ギャラリーをロードしたくないのはなぜですか?あなたのルートの一部ですか? – pjammer
上記の私の更新を参照してください - ありがとう – zsalzbank