2014-08-29 120 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 

無需再合併了。