2014-08-29 113 views
0

我是Rails开发的新手,遇到了连接和合并的问题。Rails:加入where 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

那么有什么不完全工作?另外我认为Session不是一个模型的好名字,因为它可以与很多Rails和其他关键字相关联。 – PericlesTheo 2014-08-29 15:53:38

+0

具有多个会话的教师不止一次显示。所有的会议都会出现在列表中,而不仅仅是未来的会议。 – ergdegdeg 2014-08-29 16:17:51

回答

0

我解决了这个通过添加defalut范围,以我的会话模式(这也是我改名为车间):

要显示所有会话(包括过去的):

@workshops = Workshop.unscoped 

无需再合并了。