我可以使用 Ruby DBF gem 的限制、订单或日期查询吗?

Can I use limits, orders or date queries with the Ruby DBF gem?

我指的是这个 gem:https://github.com/infused/dbf

我已经阅读了自述文件并浏览了 API 文档。感觉我应该能够在 DBF Table 上使用 ActiveRecord 样式查询,但它看起来不像。

我希望获得最后 X 条记录,按日期查询或使用 order 以某种方式帮助将 DBF 文件同步到另一个数据库,而无需通过 全部

唯一的例子似乎很简单"finds",我无法进行任何比较或以其他方式工作:

widgets.find :first, :slot_number => 's42'

有人知道怎么做吗? (另一个 gem/technique 也是合理的建议)。

虽然您不能使用 ActiveRecord 样式查询,但 DBF::Table 是一个 Enumerable,因此您可以利用任何可枚举方法来完成您想要的大部分操作。

例如,假设您只需要在 2005 年 1 月 1 日和 2005 年 7 月 15 日之间创建的小部件。我们还假设小部件 table 有一个 created_date 列。你可以这样做:

range = (Date.new(2005,1,1)..Date.new(2005,7,15))
widgets.select { |w| range.includes?(w.created_date) }

或按大小列对所有小部件进行排序:

sorted_widgets = widgets.sort_by { |w| w.size }

如果您的 DBF 文件不是太大,您也可以将其转换为数组以访问所有 Ruby 的数组方法。例如,让我们获取最后 10 条记录:

widgets.to_a.last(10)