PolymorphicなTableに無関係なモデルからhas_one Associationを定義する
analysesテーブルにanalyzable_idとanalyzable_typeという項目があって、
analyzable_typeには、'Event'と'Spot'という値が入っている。
hasする側からは↓と定義すれば、@event.analysisというふうに呼べる。
class Event < ActiveRecord::Base has_one :analysis, as: :analyzable end
今回は訳あって、NewEventというモデルから、analysisテーブルの'Event'へhas_one関連を定義したくなったとする。
class NewEvent < ActiveRecord::Base has_one :analysis, -> { where(analyzable_type: 'Event') }, foreign_key: :analyzable_id end
でできる。
まとめ
さばげぶおもしろい。