Railsから自己参照データをフェッチしようとしています。Task
次のコードで呼び出されたモデルがあります。
class Task < ActiveRecord::Base
has_many :tasks
has_many :relationships, foreign_key: "follower_id", dependent: :destroy
has_many :followed_tasks, through: :relationships, source: :followed
scope :orphans, :conditions => "id NOT IN (SELECT DISTINCT followed_id FROM relationships)"
私のコントローラーでは、すべてのタスクを子供(サブタスク)と孫と一緒に取得したいと思います。これまで私はこれを行ってきました:
@tasks = Task.orphans.to_json(:include => { :followed_tasks => {
:include => :followed_tasks}})
それはおそらく最も効率的な方法ではありませんが、それは私がその作品を思い付くことができる方法です。これで、より多くのレベルのネストが必要な場合、このコードをすぐに保守するのが難しくなります。のような変数を指定できるようにコードを改善しmaxLevelsNum = 4
、クエリでサブタスクが4レベルの深さのタスクをフェッチできるようにするにはどうすればよいですか?