рельсы находят модель без загрузки соответствующих ассоциаций - PullRequest
0 голосов
/ 26 декабря 2010

В моем приложении есть две модели: галерея и фотография.Галереи имеют много фотографий, и фотографии принадлежат одной галерее.

Когда я удаляю фотографию, я заметил, что 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 голосов
/ 27 декабря 2010

Причина, по которой это происходило, была из-за моего uploader кода, который я использовал для несущей волны.

Этот код обращался к модели галереи, когда все, что мне нужно было получить, это идентификатор:

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

Все, что мне нужно было сделать, это изменить его на:

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

Это позволило мне получить доступ к столбцу photo модель gallery_id вместо модели gallery.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...