module Constantin::ActiveRecord

Public Instance Methods

has_options(option, field: nil, **_options) click to toggle source

Usage

class Country < ::HasOptions::Base

define_constant "NZ", "PH"

end

class User

has_options :country, field: address

end

user = User.new user.address = “US” user.valid?

> true

user.address = “NZ” user.valid?

> false

if field not provided it defaults to option name

# File lib/constantin/active_record.rb, line 29
def has_options(option, field: nil, **_options)
  field ||= option

  class_eval do
    option_constant = option.to_s.classify.constantize
    validates field, inclusion: { in: option_constant::ALL }, allow_blank: true
  end
end