ruby-on-rails - 如果一个用户 has_many cars,一辆车 has_many appointments,我怎样才能得到所有用户的约会?

标签 ruby-on-rails ruby rails-activerecord

我正在使用 Rails 4.1 和 Ruby 2.1。

一个用户 has_many 辆车,和一辆车 has_many 约会。获取所有用户约会的最简单方法是什么?

理想情况下,我想做这样的事情:user.cars.appointments,我知道我可以做这样的事情:

user.cars.each do |car|
  appointments = []
  car.appointments.each do |app|
    appointments >> app
  end
  return appointments
end

但我希望有一种更快、更“Rails”的方式来做到这一点。谢谢!

最佳答案

看看 has_many :through assocation在 ActiveRecord 中。

class User < ActiveRecord::Base
  #...
  has_many :cars
  has_many :appointments, through: :cars

end

您可以获得用户的所有约会:

@user.appointments

这将自动构建通过 cars 表将约会链接到用户所需的 INNER JOIN SQL。

关于ruby-on-rails - 如果一个用户 has_many cars,一辆车 has_many appointments,我怎样才能得到所有用户的约会?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27073094/

相关文章:

ruby-on-rails - has_one 嵌套属性不保存

ruby-on-rails - 在 Ruby on Rails 中实现复合模式

ruby-on-rails - “要求”方法不起作用 - 帮助?

javascript - 将 json 参数传递给rails api

ruby-on-rails - Ruby on Rails Postgres/Active Record 搜索优化

ruby-on-rails - 如何在Rails 5中的RSpec中期待Params哈希?

ruby-on-rails - 美化 Ruby Sublime 包 "Check your ruby interpreter settings"

ruby - 如何包含使用 FileUtils#sh 执行命令的管道?

ruby - 为什么 Sinatra 请求需要 EM 线程?

ruby-on-rails - Rails NoMethod错误: undefined method `name' for "#<RecipeType:0x000055cd000b18a0>":String