ruby-on-rails - BrowserCMS 和回形针

标签 ruby-on-rails paperclip browsercms

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/

相关文章:

Ruby:回形针、S3 和深度克隆

ruby-on-rails - 未定义的方法 `name' 为 "actionmailer":String

SQL 'while' 条件

ruby-on-rails - 无法打开到本地主机的 TCP 连接 :9200 (Cannot assign requested address - connect(2) for "localhost" port 9200)

ruby-on-rails - rails ActiveRecord : Saving nested models is rolled back

javascript - 如何利用 jQuery 来检测带有动态生成的 ID 的选择标签上的变化并更改选择的选项

ruby-on-rails - Rails 错误 - 无法加载此类文件 - aws-sdk(您可能需要安装 aws-sdk gem)

ruby-on-rails - 无法让 Paperclip 正确设置我的 S3 URL