BrowserCMS и Скрепка - PullRequest
       21

BrowserCMS и Скрепка

4 голосов
/ 24 августа 2010

BrowserCMS может «удалять» объекты, что в основном устанавливает для атрибута :ched значение true.Сначала Paperclip запускает следующий код, чтобы получить все объекты определенного класса:

Person.connection.select_values(Person.send(:construct_finder_sql, :select => 'id'))

Это может вернуть [1, 2, 3].Даже если, скажем, 3 имеет: удалено установлено значение true.Затем Paperclip использует ActiveRecord для получения всех объектов People с использованием предыдущего списка идентификаторов.К сожалению, BrowserCMS не возвращает объекты, помеченные как удаленные, поэтому Paperclip сходит с ума, говоря: «Не удалось найти человека с ID = 3».

Я не уверен, куда идти дальшеобезьяна патч.Мысли

1 Ответ

1 голос
/ 01 октября 2010

Итак, хакерский способ решения этой проблемы (который может легко превратиться в скрепку для скрепки) состоит в том, чтобы изменить приведенный выше код, чтобы он был просто готов:

Person.all.collect(&:id)

или

Person.connection.select_values(Person.send(
  :construct_finder_sql,
  :select => 'id',
  :conditions => { :deleted => false }
))

Первая опция просто заставляет Paperclip выполнять запрос через Rails, который в действительности проходит через BrowserCMS, таким образом, используя свои ограничения (то есть: не видит никаких удаленных записей).Второй вариант выполняет почти тот же запрос, но пропускает записи, удаленные BCMS.

Я считаю, что первый вариант лучше, так как он позволяет BCMS контролировать запрос, поэтому, если что-то изменится, ваш обезьянский патч выигралне ломается.

...