Статус разделения ROR, основанный на условии времени - PullRequest
0 голосов
/ 21 сентября 2018
enum status: [ :in_progress, :on_hold, :cancelled, :shipped ]

Мне нужно разделить: отправлено на основе до или после одного года с текущей даты.

enum status: [ :in_progress, :on_hold, :cancelled, :shipped, :archive_shipped ]

как выписать сферу для условия?Или он должен быть написан как метод self.phase?

РЕДАКТИРОВАНИЕ

class SalesOrder < ActiveRecord::Base
  include Filterable
  include Tenancy

  enum status: [ :in_progress, :on_hold, :cancelled, :shipped ]

  has_many :line_items, dependent: :destroy
  has_many :films

  accepts_nested_attributes_for :line_items, allow_destroy: true

  validates :code, presence: true, 
               uniqueness: { case_sensitive: false, 
                             scope: :tenant_code }
  validates :ship_date, presence: true, if: Proc.new { |o| o.shipped? }
  validate :ship_date_after_release?
  validates :release_date, presence: true
  validates :due_date, presence: true

  include PgSearch
  pg_search_scope :search, against: [:code, :customer, :ship_to, :note], 
:using => { tsearch: { prefix: true } }

  scope :order_by, ->(col, dir) { order("#{col} #{dir}") }
  scope :status, ->(status) { where(status: statuses[status]) }
  scope :due_date_equals, ->(date) { where(due_date: date) }
  scope :type, ->(prefix) { where('code ILIKE ?', prefix) }
  scope :ship_date_before, ->(date) { where("ship_date <= ?", date) } 
  scope :ship_date_after, ->(date) { where("ship_date >= ?", date) } 
  scope :text_search, ->(query) { reorder('').search(query) }
  scope :code_like, ->(code) { where('code ILIKE ?', code.gsub('*', '%')) }
  scope :status_not, ->(status) { where("status <> ?", statuses[status]) }

Добавление: заархивированная область: отправлено, -> (дата) {где ("дата до 1 года} область действия: архив_ отправлено, -> (дата) {где ("дата после 1 года}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...