加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – BrowserCMS和Paperclip

发布时间:2020-12-17 01:57:52 所属栏目:百科 来源:网络整理
导读:BrowserCMS可以“删除”对象,它基本上将:deleted属性设置为true. Paperclip最初运行以下代码以获取特定类的所有对象: Person.connection.select_values(Person.send(:construct_finder_sql,:select = 'id')) 这可能会返回[1,2,3].即使比如说3有:删除设置
BrowserCMS可以“删除”对象,它基本上将:deleted属性设置为true. Paperclip最初运行以下代码以获取特定类的所有对象:

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

这可能会返回[1,2,3].即使比如说3有:删除设置为true. Paperclip然后使用ActiveRecord使用以前的id列表获取所有People对象.不幸的是,BrowserCMS不会返回标记为已删除的对象,因此Paperclip会说“无法找到ID = 3的人”.

我不确定从这里到哪里去猴子补丁.思考?

解决方法

因此,解决这个问题的hacky方法(可以很容易地变成回形针的一个分支)就是修改上面的代码就可以了:

Person.all.collect(&:id)

要么

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读