私の Rails アプリには 3 つのモデルがあります。トレイル、地域、特徴。lib/tasks ディレクトリでこれらのモデルをうまく操作できます。アネモネを使用して、データベースをクロールしてデータを入力しました。モデルで行った呼び出しの例:
Trail.find_or_initialize_by_title(detail_title)
私は現在、モデルを使用するコントローラーを作成しようとしています。
class TrailController < ApplicationController
def index
render :json => Trail.all
end
end
Rails コンソールを開いて試してみるapp.get('trail/index')
と、500 リターン コードが返され、次のように表示されます。development.log
SystemStackError (スタック レベルが深すぎます):
app/controllers/trail_controller.rb:23:in `index'
だから私は明らかにいくつかの無限再帰を引き起こしています。23 行目は index メソッドの本体に対応します。アプリで他のモデルを試しました: Feature と Region で、結果は同じです。ここで私が間違っていること、または無限に再帰しているものを正確に把握するためにさらにトレースを取得する方法を誰かに教えてもらえますか?
私のモデルは非常に単純です。
class Feature < ActiveRecord::Base
attr_accessible :name
has_and_belongs_to_many :trails
validates :name, :presence => true
end
class Region < ActiveRecord::Base
attr_accessible :hash_key, :name
has_many :trails
validates :hash_key, :name, :presence => true
end
class Trail < ActiveRecord::Base
# attr_accessible :title, :body
has_and_belongs_to_many :features
validates :title, :presence => true
end
これは、何らかの形で searchlogic gem によって引き起こされているようです。Gemfileにこれがあります:
gem 'rd_searchlogic', :require => 'searchlogic', :git => 'git://github.com/railsdog/searchlogic.|~
その行をコメントアウトしたら、bundle install を実行し、app.get を再試行して問題なく動作します。そのため、searchlogic が何らかの方法で Trail.all を妨害しています。searchlogic がインストールされていると Trail.all が機能しないのはなぜですか?