0.0
No commit activity in last 3 years
No release in over 3 years
A model attribute enums plugin for Rails3. like 'symbolize' gem.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

 Project Readme

#AttributeEnums

AttributeEnums is a model attribute enums plugin for Rails3.

##Supported versions

  • Ruby 1.9

  • Rails 3

##Installation

In your app's Gemfile, add:

gem "attribute_enums"

or

gem "attribute_enums", require: "attribute_enums/active_record"
#app/models/xxx.rb
include ::AttributeEnums::ActiveRecord

##Usage Example

###ActiveRecord

#db/migrate/xxxxxxxxxxxxxx_create_users.rb
class CreateUsers < ActiveRecord::Migration
  def change
    create_table :users do |t|
      t.string :gender
      t.boolean :enable

      t.timestamps
    end
  end
end


#app/models/user.rb
class User < ActiveRecord::Basse
  attribute_enums :gender, in: [:female, :male], default: :male, scopeds: true, ask_methods: true, i18n: true, validate: true
  attribute_enums :enable, boolean: true, default: true, scopeds: :disable, i18n: {t_prefix: :person_}
end

# in config/locales/enums_en.yml
en:
  enums:
    gender:
      female: Girl
      male: Boy
    enable:
      "true": "Enable"
      "false": "Disable"
    person_gender:
      female: Girl
      male: Boy
    person_enable:
      "true": "Enable"
      "false": "Disable"

##Options

###in or boolean

if use 'boolean', auto ignore 'in'.

this option generate get_attr_values and attr_text methods

#active_record
User.get_gender_values
User.get_enable_values
user = User.new(gender: :male, enable: true)
user.gender_text
user.enable_text

you can use get_attr_values on rails select helper and more.

###i18n and use example

default false

set true, i18n is valid get_attr_values and attr_text methods.

#active_record
User.get_gender_values  #=> [["Girl", "female"], ["Boy", "male"]]
User.get_enable_values  #=> [["Enable", true], ["Disable", false]]
user = User.new(gender: :male, enable: true)
user.gender_text        #=> "Boy"
user.enable_text        #=> "Enable"

###scopes and use example

default false

#active_record
User.male         #=> User.where(gender: :male)
User.female       #=> User.where(gender: :female)
User.enable       #=> User.where(enable: true)
User.disable      #=> User.where(enable: false)

###validate

default false, it only support in option.

if you want support attribute value is nil, you can use validate: {allow_nil: true}

###ask_methods and use example

default false, it only support in option.

#active_record
user = User.new(gender: :male, enable: true)
user.male?    #=> true
user.female?  #=> false

###default

if your defined default, it set attribute default value before validate.

#active_record
user = User.new
user.valid?
user.gender #=> :male

Note: if your migration defined field default, this is invalidation.

##Copyright

Copyright (c) 2011-2013 vkill.net .