2015-09-30 6 views
4

кажется, что Between предикат AREL может использоваться только с диапазонами, напримерАрел `between` с другими колонками, как диапазон

between(1.day.ago.time..Time.current) 

Кто-нибудь знает, как использовать его с другими столбцами? Как

between(table[:since]..table[:till]) 

(последний не будет работать, но он показывает идею). В конце концов, я хочу

column BETWEEN table.since AND table.till 
+0

Вы всегда можете использовать 'find_by_sql' –

ответ

2

Для создания table.field BETWEEN another_table.from AND another_table.to использовать данный AREL кода:

Arel::Nodes::Between.new(
    table[:field], 
    Arel::Nodes::And.new(
    [ 
     another_table[:from], 
     another_table[:to] 
    ] 
) 
) 

В моем случае я поместил этот код в .and() метод AREL.