次のサンプルコードについて考えてみます。
def Product < ActiveRecord::Base
end
def Book < Product
end
(この種の関係の名前を見つけるのをあきらめました。Bookは「子モデル」、Productは「親」だと思いましたが、それは正しくありません。たとえば、別のCommentモデルオブジェクトにリンクされたCommentモデルオブジェクトは何ですか。上記のコードでモデルの関係を説明するためのより良い方法がある場合は、ここに書き留めておいてください。いずれにしても、これが私がここにいる理由ではありません。 。)
もちろん、上記のコードを使用すると、BookモデルはProduct「products」と同じデータベーステーブルを共有します。モデルタイプは、テーブルの「タイプ」列に文字列として保存されます。したがって、Product.createを呼び出すと、タイプ値が「Product」に設定された行がテーブルに挿入され、Book.createで使用すると同じようになりますが、値は「Book」になります。
ただし、Book.lastを呼び出すと、予想どおり「Book」タイプの最後の行が返されますが、Product.lastは、「Product」や「Book」などのタイプに関係なく、最後の行を返します。 「最後の「商品」だけを手に入れたいのに。
Bookでオーバーライドするdefault_scopeをProductで定義しようとしましたが、それが解決するよりも多くの問題を引き起こし、Bookに継承されているProductの名前付きスコープを台無しにしました。
Product.lastが「Product」タイプの最後のオブジェクトを返し、「Book」タイプのオブジェクトを回避する方法はありますか?
よろしくお願いします。