as ポリモーフィック関連外部キー名指定

使用可能な関連付け

  • has_many
  • has_one

対となる関連に指定するオプション

概要

ポリモーフィック関連の外部キー名を指定するオプション。

例えば、以下のようなbelongs_toがある場合を考える。

class Book < ApplicationRecord
  belongs_to :author, polymorphic: true
end

authorとして関連付けられる相手のモデルが、has_manyなどで双方向関連を定義したい場合は:asオプションを用いて以下のようにする。

class Person < ApplicationRecord
  has_many :books, as: :author
end

これによって、以下のように双方向に関連が定義される。

Person.create
Book.create(author: Person.last)
Book.last.author # => Personのインスタンス
Person.last.books # => Bookのインスタンスの配列