2013-02-20 50 views
2

我需要Arel做一些ActiveRecord不可能的事情,但我的方法應該返回一個範圍,因爲調用者可能想要添加他們自己的一些範圍。你可以將Arel表格變回範圍嗎?

這可能嗎?

例如User.arel_table.scoped.first

+0

如果你解釋了你想要達到的目標,那將會更加簡單。 arel_table是一個與作用域非常不同的野獸,它只是一個旨在幫助構建sql查詢的語法節點。有些查詢只是沒有意義/不符合建立實際關係的要求 – 2013-02-20 16:44:53

+0

基本上,我可以使用Arel的高級語法來縮小給定的範圍。這似乎是不可能的,但也許我忽略了一些東西。 – 2013-02-21 15:48:36

+0

只是爲了確定,你知道你可以在'Relation#where'中使用arel語句嗎?例如(Model.arel_table [:column] .not_eq(nil).or(Model.arel_table [:other_column] .gt(0)))' – 2013-02-21 16:19:59

回答

4

可以使用AREL報表Relation#where

例如:

Model.where(Model.arel_table[:column].not_eq(nil) 
       .or(Model.arel_table[:other_column].gt(0))) 

有一個很好的ASCIIcast它(AREL是在結束)。此外,您可能會對squeel感興趣。