これは、SQL を転送するだけの場合に利用できます。
User.find_by_sql("...")
ただし、名前付け (invitations.user_id) で Rails の規則に従い、毎回参加して取得するのではなく、ユーザーの招待カウントを保存する (招待を追加するときに更新する) 場合は、次のようにすることができます。
ユーザーについて:
scope :emailable, where('users.email_address IS NOT NULL')
scope :low_invitations, where('users.invitation_count < 5')
次に、5 人未満の招待と電子メール アドレスを持つユーザーを、招待の数で並べ替えてクエリするには、次のようにします。
@users = User.emailable.low_invitations.order('invitation_count asc')
次に、次のような方法でユーザーの招待にアクセスします。
@user.invitations
@user.invitations.count
etc
上記の場合、invitation_count 列をユーザーに追加し、sender_id を user_id に変更し、いくつかのスコープをユーザー モデルに追加する必要があります。また、invitation_count を非正規化せずに結合を使用してカウントを取得することもできます。
Rails を使用する場合は、これらの規則に反対するよりも、これらの規則に従う方がはるかに簡単です。小さな実験的なアプリをセットアップしてリレーションで遊んだり、関連ガイドを読んだりする価値があると思われるかもしれません。
http://guides.rubyonrails.org/association_basics.html