Scoped资源的ActiveAdmin问题

时间:2016-06-13 19:27:39

标签: ruby-on-rails activeadmin

我在资源页面上有以下范围:

scope("Current Active Event Registrations") { |scope| Event.current_active_event_registrations }

查看页面时我遇到的错误是:

undefined method `except' for nil:NilClass
 c = c.except :select, :order

Event中的代码如下所示:

class Event < ActiveRecord::Base
  has_many :registrations

  scope :active_event, -> { where(active: true) }
  scope :not_expired_active, -> { active_event.where('end_at > ?', DateTime.now) }

  after_save :check_for_other_active_events

  def random_winner
    self.registrations.order("RANDOM()").first
  end

  def self.current_active_event_registrations
    events = self.not_expired_active
    events.first.registrations unless events.blank?
    all if events.blank?
  end

  private
    def check_for_other_active_events
      Event.where('id != ?', self.id).update_all(active: false) if self.active
    end
end

我只想将自定义范围添加到ActiveAdmin后端的“注册资源”页面中。

我使用的是Rails 4和最新的ActiveAdmin

1 个答案:

答案 0 :(得分:0)

def self.current_active_event_registrations
  events = self.not_expired_active
  if events.blank?
    all
  else
    events.first.registrations
  end
end