私は、このコンテンツにはいくつかのモデルに含めていますモジュールを持っている:私はSTIの使用を開始するまでRailsで基本クラスを使用してSTIを無視するにはどうすればよいですか?
self.class.find_by_foo(bar)
すべてが大丈夫でした。その行は、常にそれを回避するための簡単な方法があり、クエリ
select * from table where foo=bar"
とない
select * from table where foo=bar AND type="Whatever"
を生成する必要がありますか?
私は2つの解決策のうちですが、私はどちらかのソリューションを好きではない
self.class.find_by_sql("select * from #{self.class.table_name} where foo=bar")
:私はActiveRecord::Base
前に、最上位のクラスを見つけるかのように、手でクエリを実行するまでクラス階層を歩きます。良いものはありますか?
Rails 4 'self.class'では、予期せずオブジェクトの親クラスがRails 5' self.class'に返されましたが、モデルクラスは例外として返されます。 'self.class.base_class'を使って親クラスを取得できます。 – Kris