2016-03-01 46 views
0
Rails 3.2.18 
Ruby 2.1.5 

在我的模型/ event.rb,我有:模型使用范围管理视图

has_many :registrants 

在我的模型/ registrant.rb,我有:

belongs_to :event 

的注册人模式有以下字段:

event_id 
status 

在我的控制器/ r egistrants_controller.rb,我有:

def index 
    @events = Event.all 

所以,后来在我的意见/事件/ index.html.erb,我可以使用类似:

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

如何使用范围在我的模型将事件限制在只有那些具有“主动”状态的注册人?我知道可能有其他方式来做到这一点,但我正在尝试学习如何使用范围。

回答

3

型号:

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

观点:

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

这工作,并明确了范围语法我。只要stackoverflow允许,我会尽快接受答案 – EastsideDeveloper