我是Rails开发的新手,遇到了加入和合并的问题。
我有两个模型:讲师和会话。我想展示所有未来参加会议的教师(即不要展示未安排任何教学的教师)以及这些会议的列表。这就是我所拥有的,但它不太正确(这显示了未来多次会话超过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 :(得分:0)
我通过在我的Session模型中添加一个defalut范围(我也将其重命名为Workshop)来解决这个问题:
default_scope { where(start_time: Time.now.beginning_of_day..(Time.now.beginning_of_day + 1.year)) }
显示所有会话(包括过去的会话):
@workshops = Workshop.unscoped
不再需要合并。