BrowserCMS 可以“删除”对象,这基本上将 :deleted 属性设置为 true。 Paperclip 最初运行以下代码以获取特定类的所有对象:
Person.connection.select_values(Person.send(:construct_finder_sql, :select => 'id'))
这可能会返回 [1, 2, 3]。即使,比如说, 3 已经 :deleted 设置为 true。然后,Paperclip 使用 ActiveRecord 使用先前的 id 列表获取所有 People 对象。不幸的是,BrowserCMS 不会返回标记为已删除的对象,因此 Paperclip 吓坏了说“找不到 ID=3 的人”。
我不知道从这里到哪里去哪里没有猴子补丁。想法?
最佳答案
因此,解决这个问题的hacky方法(很容易变成回形针的 fork )是修改上面的代码以简单地准备好:
Person.all.collect(&:id)
或者
Person.connection.select_values(Person.send(
:construct_finder_sql,
:select => 'id',
:conditions => { :deleted => false }
))
第一个选项只是强制 Paperclip 通过 Rails 执行查询,这实际上是通过 BrowserCMS 进行的,从而使用其约束(即:看不到任何已删除的记录)。第二个选项执行几乎相同的查询,但省略了 BCMS 删除的记录。
我相信第一个选项是最好的,因为它允许 BCMS 控制查询,所以如果有任何变化,你的猴子补丁不会破坏。
关于ruby-on-rails - BrowserCMS 和回形针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3559071/