タグ

metaとSTIに関するtakaesuのブックマーク (2)

  • 京の路: Railsで単一テーブル継承(Single Table Inheritance)

    ActiveRecord以外のORマッパーはどうなのかよく知らないのですが、Rails(というかActiveRecord)では、DB上の一つのテーブルを複数のモデルで共有する「単一テーブル継承(Single Table Inheritance)」というものが存在します。今日はこの単一テーブル継承についてちょっと紹介します。 ここでは種々のメッセージ機能を単一テーブル継承で実現する方法を例に、単一テーブル継承について紹介します。今回想定するメッセージ機能はSNSなんかでよく使われるであろう以下の3つです。 一般メッセージ:NormalMessage 招待メッセージ:InvitationMessage お問い合わせ:InquiryMessage それでは、すべてのモデルのデータ保存先となるMessageテーブルの定義から始めましょう。 まず単一テーブル継承をActiveRecordで使う為には

  • [Rails] STI(単一テーブル継承)とメタプログラミングでDRY - Qiita

    概要 コピペコードが増えがちなサンプルアプリケーションの設計を例にとって、 STI(単一テーブル継承)とメタプログラミングでDRY(重複排除)してみる。 題材 ユーザが保持している楽曲をジャンルごとに管理するようなアプリケーション。 ユーザページでは、ジャンル別に登録曲を一覧(もっと言うとCRUD)できる。 こんなイメージですね。 kidachi_さん あなたの登録曲一覧 Rock ほげRock ふがRock Pops 未登録です。 Jazz ふーJazz ばーJazz 何も考えないで作ると、rock/pops/jazzそれぞれのモデル、ビュー、コントローラに 似たような記述・コピペが増えそうな予感を感じて頂けたでしょうか。 では、それを防ぐために、まずはSTIから。 (※追記) 実は上記だけの要件であれば userテーブル、musicテーブル、genreテーブルのみを用意して user

    [Rails] STI(単一テーブル継承)とメタプログラミングでDRY - Qiita
    takaesu
    takaesu 2014/01/20
    instance_variable_set, instance_variable_getメソッドの使い方も含む
  • 1