【问题标题】:BrowserCMS and PaperclipBrowserCMS 和回形针
【发布时间】:2010-08-24 17:15:35
【问题描述】:

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 的人”。

如果没有猴子补丁,我不知道该去哪里。想法?

【问题讨论】:

    标签: ruby-on-rails paperclip browsercms


    【解决方案1】:

    所以,解决这个问题(很容易变成回形针的一个分支)的黑客方法是修改上面的代码以简单地准备好:

    Person.all.collect(&:id)
    

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

    第一个选项只是强制 Paperclip 通过 Rails 执行查询,这实际上是通过 BrowserCMS,因此使用它的约束(即:看不到任何已删除的记录)。第二个选项执行几乎相同的查询,但忽略了 BCMS 删除的记录。

    我相信第一个选项是最好的,因为它允许 BCMS 控制查询,所以如果有任何变化,你的猴子补丁不会中断。

    【讨论】:

      猜你喜欢
      • 2011-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多