【发布时间】:2012-03-14 23:20:31
【问题描述】:
我正在尝试使用 Arel#extract 方法。我在源代码中 test_extract.rb 的测试用例中看到了一个示例,但是当我尝试在我的应用程序中重现它时,我得到未定义的方法。
table = Arel::Table.new :users
puts table[:created_at].extract('hour').to_sql
=> NoMethodError: undefined method `extract' for #<Arel::Attributes::Attribute:0x7..8>
我使用 pg 作为数据库。
更新:
我的目标是在 sql 中得到这个结果:
SELECT users.* FROM users WHERE EXTRACT(HOUR from users."created_at") = '1'
我想查找在等于任何一天的一小时内创建的所有用户。这在 sql 中有效,但我想知道如何在 arel 中创建它。这是一个example,它是如何在 arel 测试套件中使用的。
【问题讨论】:
-
我没有看到
#extract是文档中 Arel::Table 类的一部分。你想做什么?从表中检索'date'? -
我更新了描述来回答你的问题。
-
ActiveRecord 查询是否更适合您?
Users.where("Minute(?) = 1", :created_at).all? -
[抱歉,忘记您在 PG 上] ActiveRecord 查询是否更适合您?
Users.where("EXTRACT(hour from ?) = 1", :created_at).all? -
我试图避免这种情况,但还是谢谢。问题不在于阿雷尔。仅在 Rails 中使用时。当我更好地理解问题时,我会发布我的发现。
标签: sql ruby-on-rails ruby arel