Super List - github.com/jinzhu/super_list

## in config/initializers/super_list.rb
SuperList.new("Gender", {"M" => {:default => "Man", :amos => "M1"}, "F" => {:default => "Female", :amos => "M2"}}, :allow_blank => true)
SuperList.new("Gender2", {"M" => "Man", "F" => "Female"}, :allow_blank => true, :use_i18n => false)

## in app/models/user.rb
class User < ActiveRecord::Base
  super_list :gender, 'Gender'
  super_list :gender2, 'Gender', :use_i18n => true
end

User.new(:gender => 'NF').valid?              => false
User.new(:gender => 'M').valid?               => true
User.new(:gender => 'F').gender(:default)     => 'Female'
User.new(:gender => 'F').gender(:amos)        => 'M2'
User.new(:gender => 'F').gender               => 'F'

User.new(:gender => 'Man').valid?             => true
User.new(:gender => 'Man').gender             => 'M'
User.new(:gender => 'Man').gender(:amos)      => 'M1'

user = User.new(:gender => 'F', :gender2 => 'M')
user.gender2(:default)                     => "translation missing: en.Gender.Man"
user.gender2(:locale => "api")             => "translation missing: api.Gender.Man"

SuperList["Gender"].get_value("M").to_s    => "Man"
SuperList["Gender"].get_key("Man")         =>  "M"
SuperList["Gender1"].get_key("translation missing: en.Gender1.Female") => "F"
SuperList["Gender"].options               => {:use_i18n=>false, :i18n_scope=>"Gender", :allow_blank=>true}
SuperList["Gender"].keys                  => ["M", "F"]
SuperList["Gender"].values(:use_i18n => true, :locale => 'zh')
                                          => ["translation missing: zh.Gender1.Man", "translation missing: zh.Gender1.Female"]

assert_equal ["M","F"], SuperList["Gender"].map {|k,v| k }
assert_equal ["Man", "Female"], SuperList["Gender"].map {|k,v| v }

assert_equal ["M","F"], SuperList["Gender"].select_options {|k,v| v }
assert_equal ["Man", "Female"], SuperList["Gender"].select_options {|k,v| k }

Please refer test file for more examples.

Contributing to super_list

Copyright © 2011 Jinzhu. See LICENSE.txt for further details.