1

我有两个模型之间的“多通”关系:

Task:  
has_many :placements
has_many :games, :through => :placements

Game:
  has_many :placements
  has_many :tasks, :through => :placements

Placements:
  belongs_to :task
  belongs_to :game

在我的控制器的索引方法中,我只想列出那些具有特定游戏 ID 的任务。我想出的解决方案使用了一组 id,但我认为必须有一种更简单但对我来说不太明显的方法!

@tasks = Task.find(Placement.where(:game_id => current_user.selectedgame).collect(&:task_id))

欢迎任何建议。

4

2 回答 2

2

也许我在你的问题中遗漏了一些东西,但是......

@tasks = Game.find(current_user.selectedgame).tasks

您可能应该使用has_and_belongs_to_many.

于 2012-05-22T09:09:32.470 回答
0

您可以从Games对象开始:

Games.find(current_user.selectedgame).tasks

您可以使用has_and_belongs_to_many关系代替has_many :through,但这不是必需的。关于 Active Record 关联的Ruby on Rails 指南一个关于此的部分

于 2012-05-22T09:30:40.807 回答