でも、関連の貼り方までは結構サンプルコードが転がっているんですが、データ保存部分まで含めたものがあまりないような気がしたので、どうするのがいいかなと悩みつつ書いてみた。
has_oneの場合
has_one
のサンプルとして、備考のモデルで作ってみた。コメントは結構複数の場合があるけど、備考はたいてい 1 つしか持たないだろう。 1つしかオブジェクトを持たないので、
note
属性で値を直接やりとりしたかったのでこんな風に。Notable を include すればもう備考書き放題。
has_manyの場合
こんどは定番のタグをサンプルにしてみた。
関連テーブルをポリモーフィック関連にするわけですな。
雑感
*
* 関連を定義してくれる module を作っておくと後が便利だと思う。
*
*
xxx_type
と xxx_id
は Rails に任せる。自分では処理しない。* 関連を定義してくれる module を作っておくと後が便利だと思う。
*
t.references :taggable, polymorphic: true
とするサンプルが多いけど、null が入ることは設計上ありえないんだから null: false
を付けておいたほうがいいと思う。*
save_note
では保存のみ実行しているけど、note_store.note
が nil の場合はデータサイズ的なことを考えると note_store.destroy
としてもいいと思う。(集約されるテーブルなので)
まあサンプルなのでシンプルにした。
0 件のコメント :
コメントを投稿