railsがんばる子

Ruby on Railsがんばる子です。胡蝶蘭のECサイトを運営しています。

ActiveRecordで自己結合する

データ分析の集計上、自己結合しなきゃいけなかったので調べてみた。

以下の感じで、自己結合できます。

message.rb

class Message < ActiveRecord::Base
  belongs_to :item
  has_many :own_join, -> class_name: Message, primary_key: 'item_id', foreign_key: 'item_id'
end

item.rb

class Item < ActiveRecord::Base
  has_many :message
end
message = Message.joins(:own_join).all

でクロス結合されて、

message.frist.own_join

でⅠレコード目にMessageの全レコードがぶら下がってる感じになります。 分析はこれを絞り込んで使いました。


参考にさせていただいたページの断片

Rails(ActiveRecord)でN:Nの自己結合を実装する - Qiita

Rails で同じテーブルを何度も JOIN する上手い方法はありますか? - QA@IT