0

私のrailsアプリケーションには、ギャラリーと写真の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キャリアウェーブからです。次のコードを含むアップローダーがあります。

def store_dir_base
    "galleries/#{model.gallery.id}/"
end

それが原因でしょうか?

ありがとう!

4

1 に答える 1

0

これが発生した理由は、uploadercarrierwaveに使用したコードが原因でした。

このコードはギャラリーモデルにアクセスしていましたが、アクセスする必要があるのはIDだけでした。

def store_dir_base
    "galleries/#{model.gallery.id}/"
end

私がしなければならなかったのはそれを次のように変更することだけでした:

def store_dir_base
    "galleries/#{model.gallery_id}/"
end

これで、モデルではなくphotoモデル列にアクセスしていました。gallery_idgallery

于 2010-12-26T23:27:54.000 に答える