2014/07/22

Railsにてポリモーフィック関連のサンプルコード

Rails のポリモーフィック関連って便利ですよね。
でも、関連の貼り方までは結構サンプルコードが転がっているんですが、データ保存部分まで含めたものがあまりないような気がしたので、どうするのがいいかなと悩みつつ書いてみた。

has_oneの場合

has_one のサンプルとして、備考のモデルで作ってみた。
コメントは結構複数の場合があるけど、備考はたいてい 1 つしか持たないだろう。 1つしかオブジェクトを持たないので、note 属性で値を直接やりとりしたかったのでこんな風に。
Notable を include すればもう備考書き放題。

has_manyの場合

こんどは定番のタグをサンプルにしてみた。 関連テーブルをポリモーフィック関連にするわけですな。

雑感

* xxx_typexxx_id は Rails に任せる。自分では処理しない。
* 関連を定義してくれる module を作っておくと後が便利だと思う。
* t.references :taggable, polymorphic: true とするサンプルが多いけど、null が入ることは設計上ありえないんだから null: false を付けておいたほうがいいと思う。
* save_note では保存のみ実行しているけど、note_store.note が nil の場合はデータサイズ的なことを考えると note_store.destroy としてもいいと思う。(集約されるテーブルなので) まあサンプルなのでシンプルにした。

0 件のコメント :

コメントを投稿