Como adicionar corretamente colchetes a consultas SQL com 'ou' e 'e' cláusulas usando o Arel?
Estou usando o Ruby on Rails 3.2.2 e gostaria de gerar a seguinte consulta SQL:
SELECT `articles`.* FROM `articles` WHERE (`articles`.`user_id` = 1 OR `articles`.`status` = 'published' OR (`articles`.`status` = 'temp' AND `articles`.`user_id` IN (10, 11, 12, <...>)))
UsandoArel deste jeito
Article
.where(
arel_table[:user_id].eq(1)
.or(arel_table[:status].eq("published"))
.or(
arel_table[:status].eq("temp")
.and(
arel_table[:user_id].in(10, 11, 12, <...>)
)
)
)
gera o seguinte (Nota: os colchetes não são iguais à primeira consulta SQL):
SELECT `articles`.* FROM `articles` WHERE (((`articles`.`user_id` = 1 OR `articles`.`status` = 'published') OR `articles`.`status` = 'temp' AND `articles`.`user_id` IN (10, 11, 12, <...>)))
Desde aeu acho que a última consulta SQL não "funciona" como a primeira,como eu poderia usar Arel (ou talvez algo mais)Então, para gerar a consulta SQL como o primeiro?
Atualizar (após comentários)Dado consultas SQL acima de "trabalho" o mesmo, mas eu ainda gostaria de gerar a consulta SQL exata como o primeiro na questão (a principal razão para fazer isso é que a primeira consulta SQL é mais legível do que a segunda desde o primeiro um é usado menos e "explícito" colchetes), como eu poderia fazer isso usando Arel?