rails找到模型而不加载相关的关联

时间:2010-12-26 20:45:38

标签: ruby-on-rails find associations destroy

我的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

这可能是罪魁祸首吗?

谢谢!

1 个答案:

答案 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模型。