Section
多くの記事があると呼ばれるモデルがあります( Article
)。これらの記事はバージョン管理されており(名前の列にはversion
バージョン番号が格納されています)、最新のものを取得したいと思います。
section_id2からすべての記事を取得するSQLクエリは次のとおりです。
SELECT * FROM `articles`
WHERE `section_id`=2
AND `version` IN
(
SELECT MAX(version) FROM `articles`
WHERE `section_id`=2
)
私は運が悪かったのですが、Article
Modelクラスで次のように見える名前付きスコープを作成しようとしてきました。
named_scope :last_version,
:conditions => ["version IN
(SELECT MAX(version) FROM ?
WHERE section_id = ?)", table_name, section.id]
必要なバージョンをフェッチするための名前付きスコープは、次のように大きく機能しています。
named_scope :version, lambda {|v| { :conditions => ["version = ?", v] }}
find_by_sql
できる限りハイレベルに保つように努めているので、使用を終了したくありません。任意の提案や洞察を歓迎します。前もって感謝します!