我有以下型号:
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排序的游戏的组合列表。视图中的结果如下:
我解决这个问题的第一个尝试是在游戏中添加这个:
def all_players
(self.user_games + self.guests).sort_by(&:created_at)
end
在视图中迭代此数组变得笨重,因为将其转换为数组而不是ActiveRecord关系。结果,我不得不添加删除链接,我认为必须有一个更聪明的方法去实现我想要实现的目标。
提前致谢。
修改: 实际上这只是我的删除链接的路由问题。我的解决方案似乎工作正常,尽管我仍然觉得我可以以更有效的方式做到这一点。