kasei_sanのブログ

かせいさんのIT系のおぼえがきです。胡乱の方はnoteとtwitterへ

ActiveRecordeの関連付けで、class名と異なる関連名を使いたい場合、 class_name オプションを使う

こんな場合

class Item < ActiveRecord::Base
  has_one :item_detail, dependent: :destroy
end
class ItemDetail < ActiveRecord::Base
  belongs_to :item
end

ItemDetail を参照するとき、記述が冗長になってしまう

# item って単語が重複するのがキモい
item.item_detail.description

こういう時には、class_name オプション

class Item < ActiveRecord::Base
  has_one :detail, dependent: :destroy, class_name: ItemDetail
end

こうすることで、関連名は、 detail。 実際に使用する model は、 ItemDetail になる

item.detail.description

便利!