関係付けのないモデルの値を取得する

belongs_toとかhas_manyとかで関係づけられていないモデルを結合して、値を取得したい場合の対応方法です。
ちょっと悩んだのでメモ。

実装

データを取得するところはこんな感じ。

@model1 = Model1.joins("INNER JOIN model2 ON model1.item_id = model2.id")
  .select('model1.*, model2.created_at AS m2_datetime')
  .find(1)

そして、結合したschedulesテーブルのdatetimeカラムを表示させたい場合はこんな感じ。

<%= @model1.m2_datetime %>

参考

RailsでActiveRecord/Arelを使って複雑なSELECT文を実行する方法 - Rails Webook