我的rails应用程序有两个模型,画廊和照片。画廊有很多照片和照片属于一个画廊。
当我删除照片时,我注意到导轨也加载了画廊 - 我不需要。这是一个添加的数据库查询。
当我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
这可能是罪魁祸首吗?
谢谢!
答案 0 :(得分:0)
发生这种情况的原因是因为我用于载波的uploader
代码。
当我需要访问的只是id:
时,此代码正在访问图库模型def store_dir_base
"galleries/#{model.gallery.id}/"
end
我所要做的只是将其改为:
def store_dir_base
"galleries/#{model.gallery_id}/"
end
这使我访问photo
模型列gallery_id
而不是gallery
模型。