1

我有一个存储用户创建的文档的应用程序。这些文档有作者、创建日期。作者可以有角色。此外,给定的文档可能会被标记为关键字。数据库中有大约 16K 文档,用户可能希望查看这些信息的任意组合作为限制的文档。例如,查看给定作者的所有文档,或在给定时间窗口内发布的文档,或来自该角色的作者的所有文档等(以及这些文档的任意组合)。

是否有推荐的最佳方法来实现这一点?一般来说,我已经在 params 哈希中传递了所需的条件,然后使用复杂的 if ... elsif.... else.. 将传递的条件直接解码为不同的 Model.find 调用。或者,我将使用类似的 if 序列来构造正确的 SQL 条件短语,然后使用单个 find 调用。

这两个似乎都是 hack,应该有更好的方法来使用命名范围,但我无法找到一种干净的方法来处理排列。

4

2 回答 2

1

查看 Ben Johnson 的 SearchLogic——它是一个可以动态生成命名范围的 gem。

http://github.com/binarylogic/searchlogic/tree/master

于 2009-08-13T04:48:47.250 回答
0

你只需要一行代码 Model.find。不是使用条件逻辑来创建多个find调用,而是使用条件逻辑来填充:conditions传递给find调用的哈希。

于 2009-08-14T15:06:43.423 回答