使用模型中的范围来管理视图

时间:2016-03-01 11:31:39

标签: ruby-on-rails

Rails 3.2.18
Ruby 2.1.5

在我的models / event.rb中,我有:

has_many :registrants

在我的models / registrant.rb中,我有:

belongs_to :event   

注册人模型中包含以下字段:

event_id
status  

在我的controllers / registrants_controller.rb中,我有:

def index
  @events = Event.all

那么,在我的views / events / index.html.erb中,我可以使用类似的东西:

<% @events.each do |event| %>
  <% event.registrants.each do |registrant| %>  
    ....        

如何在我的模型中使用范围来限制event.registrants仅限于那些状态为“活跃”的注册人?我知道可能有其他方法可以做到这一点,但我正在努力学习如何使用范围。

1 个答案:

答案 0 :(得分:3)

模型:

class Registrant < ActiveRecord::Base
  belongs_to :event
  scope :active, -> { where(status: 'active') }
end

视图:

<% @events.each do |event| %>
  <% event.registrants.active.each do |registrant| %>