我的应用程序模拟了一个写作比赛,使用Users
、Stories
和.Competitions
Submissions
用户可以通过提交或作为所有者参与比赛。我想要一个返回用户拥有或参与的所有比赛的查询或方法。我有一个方法将它们作为数组返回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