【发布时间】:2013-02-12 11:23:57
【问题描述】:
我在模型中有一个作用域:
scope :daily, lambda {|day| where :post_time =>
[day.beginning_of_day() .. day.end_of_day()] }
:post_time 在数据库中声明为不可为空,但 AREL 坚持在生成的 SQL 中添加虚假的IN (NULL):
SELECT `<table>`.* FROM `<table>`
WHERE (`<table>`.`post_time`
BETWEEN '2013-02-05 00:00:00' AND '2013-02-05 23:59:59'
OR `<table>`.`post_time` IN (NULL))
我怎样才能阻止它这样做?显然我可以再添加一个条件not_eq(nil)、:post_time != nil 或类似的,但我的问题是为什么 AREL 会这样做,如果没有额外的条件来否定它,我该如何防止它。
【问题讨论】:
标签: ruby ruby-on-rails-3 activerecord arel