Я новичок в разработке Rails и столкнулся с проблемой с объединениями и слияниями.Rails: Соединение с предложением where
У меня есть две модели: инструктор и сессия. Я бы хотел показать всех инструкторов, у которых в будущем будет сеанс (т. Е. Не показывать инструкторов, которые не планируют ничего учить), а также список этих сеансов. Вот что у меня есть, но это не совсем верно (Это показывает, инструкторам более чем на 1 сессии в будущем несколько раз):
class Session < ActiveRecord::Base
belongs_to :instructor
def self.is_current
where(start_time: Time.now.beginning_of_day..(Time.now.beginning_of_day + 1.year))
end
end
class Instructor < ActiveRecord::Base
has_many :sessions
def self.with_current_sessions
joins(:sessions).merge(Session.is_current)
end
end
class InstructorsController < ApplicationController
def index
@instructors = Instructor.with_current_sessions
end
end
А потом индексном наставники:
<% @instructors.each do |inst| %>
<h3><%= inst.full_name %></h3>
<% if inst.sessions.size > 0 %><p>Teaching <%= pluralize(inst.sessions.size, 'workshop') %>:</p>
<ul class="standard">
<% inst.sessions.each do |sess| %>
<li><%= link_to sess.name, sess %></li>
<% end %>
</ul>
<% end %>
<% end %>
Так что же не работает? Также я считаю, что сеанс не является хорошим именем для модели, поскольку он может быть связан с большим количеством Rails и других ключевых слов. – PericlesTheo
Инструкторы с более чем одной сессией появляются не один раз. И все сессии появляются в листинге, а не только в будущих. – ergdegdeg