状況設定
user has_many messages.
admin has_many messages.
user / admin に対してポリモーフィック関連を作りたい。
手順1 : rails g model
rails g model message messagable:references{polymorphic} message:text
rake db:migrate
手順2 : modelにオプションを付加
Userモデル
class User < ActiveRecord::Base
has_many :messages, :as => :messagable
end
Adminモデル
class Admin < ActiveRecord::Base
has_many :messages, :as => :messagable
end
Messageモデル
※ 既に以下のbelongs_toは出来ているので、書き加える必要なし。
class Message < ActiveRecord::Base
belongs_to :receivable, polymorphic: true
end
# 手順3 : ポリモーフィック関連使い方
## Messageをcreateする時
```ruby
user = User.first
user.messages.create(message: "ユーザーです")
admin = Admin.first
admin.messages.create(message: "アドミンです")
結果↓
Messageを取得
普通に user has_many messages. で行ける。
返ってくるのはActiveRecordRelations。
user.messages
admin.messages
Messagable(User or Admin)を取得
message belongs_to messagable. 少し特殊。
返ってくるのは、ActiveRecord。
message = Message.first
message.messagable
後は応用可能ですね!