Railsドキュメント

親と子のテーブルのレコードの継承関係

適応バージョン

説明

親と子のテーブルのレコードの継承関係

使い方

delegated_type(ロール, types: 型=nil, オプション引数)

オプション

オプション 説明 デフォルト値
:foreign_key 関連オブジェクトで使用する外部キー名 :foreign_key
:primary_key 関連オブジェクトの主キー id

class Entry < ApplicationRecord
    delegated_type :entryable, types: %w[ Message Comment ], dependent: :destroy
end

Entry#entryable_class #=> +Message+ or +Comment+
Entry#entryable_name  #=> "message" or "comment"
Entry.messages        #=> Entry.where(entryable_type: "Message")
Entry#message?        #=> true when entryable_type == "Message"
Entry#message         #=> returns the message record, when entryable_type == "Message", otherwise nil
Entry#message_id      #=> returns entryable_id, when entryable_type == "Message", otherwise nil
Entry.comments        #=> Entry.where(entryable_type: "Comment")
Entry#comment?        #=> true when entryable_type == "Comment"
Entry#comment         #=> returns the comment record, when entryable_type == "Comment", otherwise nil
Entry#comment_id      #=> returns entryable_id, when entryable_type == "Comment", otherwise nil

ソースコード