こんにちは、それぞれの優れた RailsCasts チュートリアルに基づいて、シンプルな検索機能と will_paginate ページネーションを組み合わせています。
コード (モデル内) を以下に示します。
def search(search, page)
# See RailsCasts #37 Simple Search Form & #51 will_paginate
if search
@matches = SalesActivity.where('salespeople.name LIKE ? OR products.name LIKE ?',
"%#{search}%", "%#{search}%")
@matches.paginate :per_page => 30,
:page => page,
:order => 'created_at DESC' # <--- causes exception
else
paginate :include => [:salesperson, :product],
:order => 'created_at DESC', # works
:per_page => 30,
:page => page
end
end
指定された順序は、検索なしのパスのページネーション リクエストで正常に機能します。
ただし、検索結果 (@matches) を使用するパスでは、次のエラーが発生します。
SQLite3::SQLException: ambiguous column name: created_at: SELECT ... ORDER BY created_at DESC LIMIT 30 OFFSET
order パラメータを削除すると、正常に動作します。
これを修正する方法についての提案をいただければ幸いです。ありがとう。