2011-08-08 20 views
9

CRMアプリケーションの場合、PersonモデルをAccountモデルに直接関連付けることができ、CompanyモデルとAccountモデルを関連付けることができます。また、住所モデルを会社または人物に関連付ける必要があります。これは、私が念頭に置いていることです:Railsモデルはいずれかのモデルに属しています

したがって、アカウントは「個人アカウント」または「ビジネスアカウント」のいずれかになります。それらは相互に排他的です。私は、外部キーaccount_idとcompany_idをPersonテーブルに入れる予定です。同じトークンで、私は外部テーブルperson_idとcompany_idをAddressテーブルに持っています。いずれの場合も、1つの外部キーがnullになります。

これはRailsでも問題ありませんか?もしそうでなければ、どんな勧告も高く評価されます。

+0

あなたは必ず協会の一種類のみが存在することを確認するためにモデルの検証を使用することができます。どんな大きな写真の答えが何であるかわからない... – jaydel

答えて

8

多型関連を見てみましょう。私はそれはあなたが探しているものだと思う: http://guides.rubyonrails.org/association_basics.html#polymorphic-associations

class Account 
    belongs_to :User, :polymorphic => true 
end 

class Person 
    belongs_to :Account, :as => :User 
    belongs_to :Company 
    has_one :Address, :as => :User 
end 

class Company 
    belongs_to :Account, :as => :User 
    belongs_to :Persons 
    has_one :Address, :as => :User 
end 

class Address 
    belongs_to :User, :polymorphic => true 
end 
... 

挨拶スヴェン

+2

ありがとうSven!それがまさに私が必要としていたものです。 "The Rails 3 Way"のPolymorphic Associationsを読んでください。私はあなたの助けに感謝します。 –

関連する問題