【问题标题】:RoR: Find all associated objects of an array of objectsRoR:查找对象数组的所有关联对象
【发布时间】:2012-07-28 19:04:25
【问题描述】:

在 Rails 中工作,我正在努力输出 2012 年秋季季度的用户课程列表。我在这里有 3 个重要模型:用户、宿舍和课程。根据我所做的其他工作,我很确定我的模型协会是正确的,但对于那些感兴趣的人:

  • 用户 has_many :quarters 和 has_many :courses through quarters
  • Quarter belongs_to 用户和 HABTM 课程(通过适当的联接表)
  • 课程有_many 用户通过季度和HABTM 季度

我想实现一个查询来收集特定季度的课程,例如

    current_user.quarters.where(:term => "Fall 2012").courses.each do |c|
       puts c.title
    end

但这会导致错误“未定义的方法'课程'”,我理解,但我仍然想访问对象数组的所有关联对象,就像上面的代码一样,而不是运行我需要的嵌入式循环:

    current_user.quarters.where(:term => "Fall 2012").courses.each do |q|
        q.courses.each do |c|
            puts c.title
        end
    end

谢谢!任何想法表示赞赏:)

【问题讨论】:

  • 为什么不能使用Courses.where(:quarter => my_quarter, :user => current_user).each

标签: ruby-on-rails arrays associations associated-object


【解决方案1】:

像这样:

current_user.courses.where("quarters.term" => 'Fall 2012')

应该工作:)

【讨论】:

  • 英勇的响应时间,正是我正在寻找的答案。有什么地方我可以去了解更多关于这类事情的信息吗?
  • guides.rubyonrails.org/active_record_querying.html 是一个好的开始,特别是关于连接的部分。您必须了解,在声明 has_many :through 时,rails 会进行连接以获得您想要的。因此,您可以像执行显式联接一样应用条件!
  • 如果适合您的需要,也可以考虑批准答案:)
  • 优秀的资源。你有我最诚挚的感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-29
相关资源
最近更新 更多