私はクラスUserを持ち、サブクラスはAdminとStudentです。単一テーブル継承(STI)を使用したサブクラスの作成
追加の専用列が必要です。私がRuby on RailsでSTIを使ってこれをどうやって行うことができるか教えてください。
ありがとうございます!
さらに、usersテーブルにデータを設定するにはどうすればよいですか?
私はクラスUserを持ち、サブクラスはAdminとStudentです。単一テーブル継承(STI)を使用したサブクラスの作成
追加の専用列が必要です。私がRuby on RailsでSTIを使ってこれをどうやって行うことができるか教えてください。
ありがとうございます!
さらに、usersテーブルにデータを設定するにはどうすればよいですか?
通常、あなたはUser
クラスにtype
の列を持っています。あなたがRailsのSTIを利用して、まだ柔軟にあなたのサブクラスのメソッドを作成することができ
class User
end
class Admin < User
end
class Student < User
end
この方法:今すぐあなたのサブクラスでは次のようなUser
クラスから継承したいです。
しかしそれを整理ビットを維持するために、あなたのクラスを使用するために今、このような
#models/users/admin.rb
module Users
class Admin < User
end
end
#model/users/student.rb
module Users
class Student < User
end
end
として、お使いのモデルの下でフォルダ内のサブクラスを置くことができ、あなたがしたいより多くの情報にhere
を探します応答トンでUsers::Student.find(id)
UPDATE
を行いますoコメント、私は学生に特有のコラムについては、あなたがより良い協会、例えばStudent.has_one :grade
とか何かのものを提供する方が良いと思います。この方法で、あなたのユーザーオブジェクトを正常に抽象化して共通ユーザーメソッド。しかしStudent
とAdmin
の行を作成するために、あなたはUsers::Student.create(params)
かUsers::Admin.create(params)
を行うことができ、RailsはSTIと
感謝を対処する方法を知っているが、私の質問は、私が学生に固有の列(「グレード」と言う)どのように行うのですか?また、Student and Adminの行を作成するにはどうしたらいいですか? – user1175969
私はちょうどこれを反映する答えを更新しました – oreoluwa
ありがとう! StudentがUserのサブクラスであり、「grade」と呼ばれる別の列を持つことも可能ですか?彼らは同じテーブルを共有しますか? – user1175969