Rails 4.0.8を使用すると、インスタンスメソッド内でクエリが動作するが、メソッドがクラスに含まれているモジュールに移動されてしまうという奇妙な状況があります。Railsクエリはクラス内では動作しますが、モジュールでは失敗します
これは動作します:
class Filing < ActiveRecord::Base
...
def owner_company
# Because of legacy database, we have to look up the company a view (Company)
Company.where(fileno: self.owner_fileno).first
end
end
このセットアップは動作しません:
class Filing < ActiveRecord::Base
include FilingSetup
def company
FilingSetup::owner_company(self)
end
end
module FilingSetup
def self.owner_company(filing)
# Oddly, this query continually returns nil
Company.where(fileno: filing.owner_fileno).first
end
end
そして、私は(PRYを使用して)モジュール内のクエリの時点で壊れた場合、私は、クエリを実行することができますPryコンソールでうまく結果を得ることができます。
私は何かが分かりませんでしたか?または、レガシーデータベースとの接続問題に対して私は反対です。 (会社はactiverecord-sqlserver-adapterを使用してSQLServerデータベース内のビューに対してクエリを実行しています)
多くのありがとうございました!
ありがとう、Khanhですが、(FilingSetup :: owner_companyの代わりに)FilingSetup.owner_companyを呼び出しても違いはありません。しかし、私が発見したのは、モジュールのクエリの直前にbinding.pryステートメントを追加すると、Pryをトリガしなくても動作させることができます。だから、私はここで思っているいくつかの記憶奇妙なものと戦っているようだ、確かにそのような基本的なコードから期待どおりに働いているようではない。 – tjg