Arel::Tableの内容をActiveRecord_Relationにマージする方法
ユーザ(User
)毎にグループ化した アクセスログ(AccessLog
)一覧を作っております。
表示項目で 最新のアクセス日(newest_accessed_at
)をArelで取得したのですが、
その内容を ActiveRecord_Relationに入れると classがArel::Tableとなり .page
等のメソッドが実行できなくなります。
ActiveRecord_Relationの内容に うまく Arelの内容をマージすることは可能でしょうか?
# model
class User < ActiveRecord::Base
has_many :access_logs
end
class AccessLog < ActiveRecord::Base
belongs_to :user
end
# model or controller
@access_logs = AccessLog.all
@access_logs = @access_logs.group(:user_id).project(arel_table[:accessed_at].maximum.as('`newest_accessed_at`')) # ここでclassがArelになる
# @access_logs = @access_logs.group(:user_id).select("`access_logs`.*, max(`access_logs`.`accessed_at`) AS `newest_accessed_at`") # mysqlエラー
@access_logs = @access_logs.page(10) # Arel::Tableだと `.page`が呼び出せない
# views
<% @access_logs.each do |access_log| %>
<tr>
<td><%= access_log.user.id %></td>
<td><%= access_log.user.name %></td>
<td><%= access_log.newest_accessed_at %></td>
</tr>
<% end %>