私はDBとしてMongoDBを使ってイベントプラットフォームを作成しようとしています。 Events
とUsers
の多対多の関係が必要です。つまり、関係にプロパティがあることが必要です(具体的にはUsers
を確認または確認できません)。Event
私はこれがRDBMSには理想的だと認識していますが、私はMongoDBを使用していますので、他の場所で利用していて、引き続き使用したいと考えています。has_many:throughとMongoidをシミュレート
Event
にはGuests
を埋め込み、Users
に属しています。このようにして、どのユーザーがイベントに迅速に出席しているのか、そして1つのクエリーしかないのかを知ることができます。しかし、私もEvents
User
がすぐに出席しているのを見たいので、それぞれUser
にEvent
の配列を持たせたいと思います。
ここにコードの要約を示します。理想的な使用パターンで
# user of the application
class User
has_many :events
end
# event that users can choose to attend
class Event
embeds_many :guests
has_many :users, :through => :guests # Won't work
end
# guests for an event
class Guest
field :confirmed?, type: Boolean
embedded_in :event
belongs_to :user
end
# Ideal use pattern
u = User.create
e = Event.create
e.guests.create(:user => u, :confirmed => true)
、e
はu
とu
を参照してGuest
がe
への参照を有しています。
私はhas_many :through
行が動作しないことを知っています。どのように同様の機能を得るための任意の提案?私はGuest
のafter_create
コールバックを使用してEvent
への参照をUser
に追加することを考えていましたが、それはかなりハッキリです。
多分私は間違った道を下った。提案?ありがとう。
私はあなたの答えを見ました。私は自分の問題を解決する方法を投稿しましたが、オブザーバーを使用することはよりきれいでした。ありがとう! – cbrauchli
ねえ、nodrog、リンクが壊れています。 –