0

我的 Rails 应用程序有两个模型,画廊和照片。画廊有很多照片,照片属于一个画廊。

当我删除一张照片时,我注意到 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来自载波。我有一个上传器,其中包含以下代码:

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

会不会是罪魁祸首?

谢谢!

4

1 回答 1

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

于 2010-12-26T23:27:54.000 回答