0
Я боролся с этим в течение некоторого времени. Я пытаюсь запустить запрос с помощью модели ActiveRecord.Вложенные наборы с использованием ActiveRecord
миграции:
class CreateEmployees < ActiveRecord::Migration
def change
create_table :employees, {:id => false} do |t|
t.string :emp
t.integer :lft
t.integer :rgt
t.timestamps
end
end
end
дб/seeds.rb
Employee.delete_all
Employee.create(emp: 'Albert', lft: 1, rgt: 12)
Employee.create(emp: 'Bert', lft: 2, rgt: 3)
Employee.create(emp: 'Chuck', lft: 4, rgt: 11)
Employee.create(emp: 'Donna', lft: 5, rgt: 6)
Employee.create(emp: 'Eddie', lft: 7, rgt: 8)
Employee.create(emp: 'Fred', lft: 9, rgt: 10)
SQL, я хочу, чтобы преобразовать в AR является:
SELECT COUNT(E2.emp) AS indentation, E1.emp
FROM Employees AS E1, Employees AS E2
WHERE E1.lft BETWEEN E2.lft AND E2.rgt
GROUP BY E1.emp
ORDER BY E1.lft
До сих пор единственным способом я был способный заставить его работать в rails, использует следующее, которое возвращает массив, и я не уверен в значении «Employee» у звезды т заявления.
Employee.connection.select_all("SELECT COUNT(P2.emp) AS indentation, P1.emp FROM Employees AS P1, Employees AS P2 WHERE P1.lft BETWEEN P2.lft AND P2.rgt GROUP BY P1.emp ORDER BY P1.lft")