Ruby on Railsでこの小さなアプリケーションを構築しています。 このアプリでは、次のモデルを使いこなすことができます。これは、それが最高の練習であるかどうかわかりません。 (私は実際にJava開発者です)Ruby on Railsのクラス継承
私はスーパークラスとしてそれを使用する人クラスがあり、その人クラスからスタッフクラスと顧客クラスが継承されています。これを達成するために、私は持っています:
class Person < ActiveRecord::Base
end
class Staff < ActiveRecord::Base
belongs_to :person, :polymorphic => true, :dependent => :destroy
end
class CreateStaffs < ActiveRecord::Migration
def self.up
create_table :staffs do |t|
t.references :person, :polymorphic => true, :null => false
....
最初に、私はうまくいきましたが、私は最高のことをやっていますか?
私がやろうとしているのは、人物とスタッフオブジェクトを作成してリンクするフォームを作成することです。そして、私は単一のフォーム上に2つのモデルを持つことに固執しています。 誰かに提案がありますか?
あなたがここに何をやっているおかげで、 ケビン・レン
ありがとうharald、私は提案したモデルに基づいて1つの質問があります。スタッフのユーザー名フィールドがあるとします。 Staffは実際にPersonテーブルに入っているので、Personがユーザ名フィールドにアクセスするのを防ぐにはどうすればよいですか? –
@ケビン、あなたは別の質問としてこれを尋ねることをお勧めします。多分もっと多くの人々がそれを見て答えます。あなたの唯一の選択肢は、バリデーションを使うこと、またはアクセスメソッド( 'Person.username'と' Person.username = ')をオーバーライドすることだと思います。以下はSTIに関する素晴らしい記事です:http://code.alexreisner.com/articles/single -table-inheritance-in-rails.html – harald
ありがとう@harald、次回は別の質問をすることを忘れないでください。 –