Rails 4 - 结合activerecord关系结果

时间:2014-01-13 04:33:50

标签: ruby-on-rails activerecord ruby-on-rails-4

我有以下型号:

class Game < ActiveRecord::Base
  has_many :user_games, :dependent => :destroy
  has_many :users, :through => :user_games
  has_many :guests, :dependent => :destroy
end

class User < ActiveRecord::Base
  has_many :user_games, :dependent => :destroy
  has_many :games, :through => :user_games
end

class Guest < ActiveRecord::Base
  belongs_to :game
  belongs_to :user
end

游戏可以拥有多个用户,用户可以属于多个游戏。用户还可以将客人带到游戏中,我需要跟踪带来客人的用户。我正在试图找出创建连接的方法,其中我有一个用户和访客按照created_at排序的游戏的组合列表。视图中的结果如下:

  1. Joe的访客[如果current_user是Joe,则删除链接]
  2. 汤姆
  3. 比尔
  4. Tom's Guest [如果current_user为Joe则链接删除]
  5. 我解决这个问题的第一个尝试是在游戏中添加这个:

    def all_players
      (self.user_games + self.guests).sort_by(&:created_at)
    end
    

    在视图中迭代此数组变得笨重,因为将其转换为数组而不是ActiveRecord关系。结果,我不得不添加删除链接,我认为必须有一个更聪明的方法去实现我想要实现的目标。

    提前致谢。

    修改: 实际上这只是我的删除链接的路由问题。我的解决方案似乎工作正常,尽管我仍然觉得我可以以更有效的方式做到这一点。

0 个答案:

没有答案