Users
私のアプリケーションは、 、Stories
、Competitions
およびで作文コンテストをモデル化していますSubmissions
。
ユーザーは、投稿を通じて、または所有者としてコンテストに参加できます。ユーザーが所有または参加しているすべてのコンテストを返す 1 つのクエリまたはメソッドが必要です。それらを配列として返すメソッドを持っていますが、competitions | owned_competitions
チェーンしたり、スコープを適用したりできるように、それらを ActiveRecord エンティティに保持したいと思います。
それを行う方法、またはこれらの関係をセットアップするためのより良い方法はありますか?
私のモデルは次のようになります。
ユーザー.rb:
has_many :stories
has_many :submissions
has_many :competitions, :through => :submissions
has_many :owned_competitions, :class_name => "Competition"
ストーリー.rb:
belongs_to :user
has_many :submissions
has_many :competitions, :through => :submissions
競争.rb:
belongs_to :owner, :class_name => "User", :foreign_key => 'user_id'
has_many :submissions
has_many :competitors, :through => :submissions, :source => :user
has_many :stories, :through => :submissions
scope :expiring_today, lambda { where("deadline = ?", Date.today) }
提出.rb:
belongs_to :user
belongs_to :story
belongs_to :competition