2014-08-29 4 views
0

Я новичок в разработке 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 %> 
+0

Так что же не работает? Также я считаю, что сеанс не является хорошим именем для модели, поскольку он может быть связан с большим количеством Rails и других ключевых слов. – PericlesTheo

+0

Инструкторы с более чем одной сессией появляются не один раз. И все сессии появляются в листинге, а не только в будущих. – ergdegdeg

ответ

0

Я решил эту проблему путем добавления сферы defalut к моей модели сессии (которую я также переименованного Workshop):

показать все сеансы (включая последние из них):

@workshops = Workshop.unscoped 

Нет необходимости в слияниях больше.

Смежные вопросы