我有一个必须使用 find_all_by 的案例;我有一个大小有限 (4kb) 的 cookie 会话哈希,因此我没有存储我自己需要的记录,而是将 ID 存储在一个数组中。因此, find_all_by 允许我直接在模型/类上找到这些记录。例如,
@data = Data.find_all_by_id(session[:search_results])
但是,我需要从该列表中删除当前正在查看的搜索结果。
通常我可以做一个
find (:all, conditions: ["id != ?", current_user.id])
但是由于 find_all_by 将 ActiveRecord 查询作为数组返回,并且似乎不支持这样的条件,所以我对最佳方法有点困惑。
此外,我不能做一个数组差异()(例如,@data - @current_user),其中@current_user 是一个AR对象,因为它不能对一个数组和一个AR对象做差异(我可以转换AR对象到一个数组并走这条路?)
如何从 Class.find_by_all 调用中收到的数组中减去一条记录?