3

モデルにスコープがあります:

scope :daily, lambda {|day| where :post_time => 
  [day.beginning_of_day() .. day.end_of_day()] }

:post_timeはデータベースでnull許容ではないと宣言されていますが、ARELはIN (NULL)生成されたSQLにスプリアスを追加することを主張しています。

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))

どうすればこれをやめることができますか?明らかに、もう1つ条件などを追加できますnot_eq(nil):post_time != nil、私の質問は、 ARELがそれを行う理由と、それを無効にするための追加の条件なしでそれを防ぐにはどうすればよいかということです。

4

1 に答える 1

3

範囲の配列を渡すことでarelを混乱させているようです(ただし、なぜこれによって余分な句が追加されるのかはわかりません)。

scope :daily, lambda {|day| where :post_time => 
  (day.beginning_of_day() .. day.end_of_day()) }

大丈夫なはず。

于 2013-02-12T13:19:36.800 に答える