代码之家  ›  专栏  ›  技术社区  ›  slant

浏览器和回形针

  •  4
  • slant  · 技术社区  · 14 年前

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

    这可能会返回[1,2,3]。即使,比方说,3已经:deleted设置为true。然后,曲别针使用ActiveRecord获取所有使用上一个ID列表的人物对象。不幸的是,BrowserCMS不会返回标记为已删除的对象,所以回形针会说“找不到ID=3的人”。

    我不知道从这里到哪里去,除了一个猴子补丁。思想?

    1 回复  |  直到 14 年前
        1
  •  1
  •   slant    14 年前

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

    Person.all.collect(&:id)
    

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

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