我是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模型中的惊悚片?谢谢你帮助我!
答案 0 :(得分:0)
假设thrilldate
是Thrill
@reservations = current_user.reservations.joins(:thrill).order('thrills.thrilldate asc')