如何在父母的字段中对嵌套项进行排序'模型?

时间:2016-09-06 16:09:36

标签: mysql ruby-on-rails

我是Ruby on Rails的新手,并尝试做出正确的查询。但在阅读完文档和示例后,我无法从中获得正确的查询。所以我希望有人能指出我正确的方向。

情况我构建了一个应用程序,培训师可以在其中设置培训,并在几个日期进行这些培训(日期称为惊险刺激),其他用户可以订阅这些刺激。它具有以下结构:

class User
  has_many :trainings
  has_many :thrills, through: :trainings
  has_many :reservations

class Training
  belongs_to :user
  has_many :reservations
  has_many :thrills
  has_many :users, through: :thrills

class Thrill
  belongs_to :training
  has_many :reservations
  has_many :users, through: :reservations

class Reservation
  belongs_to :user
  belongs_to :thrill
  has_one :training, through: :thrill

问题 如何列出由thrilldate订购的current_user的所有预订?惊悚片是在Thrills模型中设置的。

在我的reservations_controller.rb中,我有:

@reservations = current_user.reservations

这给出了所有重复的正确列表,但我想在reservation.thrill.thrilldate上对此进行排序。 我尝试使用这个视图:

<% @reservations.order("reservation.thrill.thrilldate ASC").each do |reservation| %>

不幸的是,这给出了错误:

  

SQLite3 :: SQLException:没有这样的列:reservation..thrill.thrilldate:SELECT   &#34;预订&#34;。* FROM&#34;预订&#34;预约&#34;。&#34; user_id&#34; =   ? ORDER BY reservation.thrill.thrilldate ASC

谁知道我怎么能参考Thrills模型中的惊悚片?谢谢你帮助我!

1 个答案:

答案 0 :(得分:0)

假设thrilldateThrill

上的一列
@reservations = current_user.reservations.joins(:thrill).order('thrills.thrilldate asc')