0

私は次のテーブルを持っています:ユーザー、友達、興味、そして休日。このアプリの目的は、ユーザーの興味と祝日(友達の誕生日、記念日など)、および友達の興味を記録して、関連するコンテンツを含むリマインダーを送信できるようにすることです。いずれかの方法:

ユーザーには興味があり
ますユーザーには友達がいます
友達にも興味があり
ますユーザーには祝日があります(約10のリスト)
-母の日、父の日、またはバレンタインの日が選択されている場合(休日)必要になります人の名前とその興味も保存します

だから私はこれらをどのように設定するのか疑問に思っています..トリッキーなものは興味と休日です。

ユーザーと友人の両方がアクセスできるように、関心は多形である必要がありますか?または多くの:throughがありますか?

休日はどうですか?それらは名前と人の興味を記録するためにどのように機能しますか?

ありがとう!私はこれのために本当に苦労していて、おそらく物事を複雑にしすぎています。

4

1 に答える 1

2

私はあなたが何をしたいのか理解したと思うので、これは私がこれをモデル化する方法です:

User

has_many :friends
has_many :person_interests, :as => :person
has_many :interests, :through => :person_interests
has_many :user_holidays
has_many :holidays, :through => :user_holidays

Friend

belongs_to :user
has_many :person_interests, :as => :person
has_many :interests, :through => :person_interests

PersonInterest

belongs_to :interest
belongs_to :person, :polymorphic => true

Interest

has_many :person_interests
has_many :people, :through => :person_interests # may need an `inverse_of` here

UserHoliday

belongs_to :user
belongs_to :holiday

Holiday

has_many :user_holidays
has_many :users, :through => :user_holidays

これらの設定により、必要なクエリを実行できるようになります。

于 2012-05-18T02:46:29.743 に答える