JavaFree.org | RubyOnBr.org

:select com :include no find

Acompanhar :select com :include no find 4 posts, 2 participantes

Avatar Thiago 38 posts

Alguém já conseguiu fazer com que o :include não ignore a opção :select?

Tenho o seguinte código

E me retorna a seguinte query:

  Vehicle Load Including Associations (0.4ms)   SELECT `vehicles`.`id` AS t0_r0, `
vehicles`.`brand_id` AS t0_r1, `vehicles`.`fuel_id` AS t0_r2, `vehicles`.`name` AS t0_r3,
 `vehicles`.`created_at` AS t0_r4, `vehicles`.`updated_at` AS t0_r5, `brands`.`id` AS t1_r0, 
`brands`.`name` AS t1_r1, `brands`.`created_at` AS t1_r2, `brands`.`updated_at` AS t1_r3, `fuels`.`id` AS 
t2_r0, `fuels`.`name` AS t2_r1, `fuels`.`value` AS t2_r2, `fuels`.`created_at` AS t2_r3, 
`fuels`.`updated_at` AS t2_r4 FROM `vehicles` LEFT OUTER JOIN `brands` ON `brands`.id = 
`vehicles`.brand_id LEFT OUTER JOIN `fuels` ON `fuels`.id = `vehicles`.fuel_id ORDER BY vehicles.name ASC 
LIMIT 0, 6

Sei que posso utilizar o :joins no lugar do :include, porém o :joins ele não agrupa um objeto no outro, ou seja, eu tenho que colocar no select “vehicles.id, vehicles.name, brands.name as brand_name, fuels.name as fuel_name” e acessar através do vehicle.brand_name e vechile.fuel_name, se eu não colocar o as, o brand.name sobreescreve o vehicle.name.

Tem a gem select_with_include porém a versão dela é 0.0.1 de 2007, parece estar abandonada, não gosto de utilizar libs assim.

Alguém tem alguma solução?

 
Avatar Mereghost 1476 posts

Cara, tem um plugin chamado scrooge, que ele arranca fora tudo que não é usado em views e ajeita o select de acordo.

 
Avatar Thiago 38 posts

Eu vi lá que agora ele recomenda o slim_scrooge por ter menos código e ser mais rápido.
Você está usando qual dois 2?

Mas tipo, sobre minha pergunta, você sabe informar se existe a possibilidade de utilizar o select com include? Ou todo mundo que busca melhorar a performance utilizar o scrooge?

 
Avatar Mereghost 1476 posts

Thiago:

Estou usando o slim.

Quanto ao uso do select, tu tem que colocar o nome correto com o “as” porque tu estaria escrevendo a parte, bem, do select do SQL. É como usar uma string para o conditions.

Não tenho idéia se o ideal seria um include no teu caso. Se for só pra listar, e tu não vai precisar de nenhum outro atributo dos outros models (só um ou dois) vale o joins + select.