Module: HasUniqueThreeLetterCode::ClassMethods
- Defined in:
- lib/has_unique_three_letter_code/class_methods.rb
Instance Attribute Summary collapse
-
#code_sources ⇒ Object
readonly
Returns the value of attribute code_sources.
Instance Method Summary collapse
Instance Attribute Details
#code_sources ⇒ Object (readonly)
Returns the value of attribute code_sources.
7 8 9 |
# File 'lib/has_unique_three_letter_code/class_methods.rb', line 7 def code_sources @code_sources end |
Instance Method Details
#has_unique_three_letter_code(*columns) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/has_unique_three_letter_code/class_methods.rb', line 8 def has_unique_three_letter_code(*columns) = columns.last.is_a?(Hash) ? columns.pop : {} columns.each do |column| validates column, :uniqueness => ([:uniqueness] || true), :length => {:is => 3, :allow_nil => true}.merge([:length] || {}), :exclusion => { :in => Proc.new { HasUniqueThreeLetterCode.config.forbidden_codes }, :message => "'%{value}' is not an appropriate word" } (@code_sources ||= {})[column] = [:source] || :name before_validation do if [:leave_blank] leave_blank = [:leave_blank][:if] if (leave_blank.blank? || (leave_blank.is_a?(Proc) && !leave_blank.call(self)) || (leave_blank.is_a?(Symbol) && !self.__send__(leave_blank))) dont_leave_blank = [:leave_blank][:unless] if (dont_leave_blank.blank? || (dont_leave_blank.is_a?(Proc) && dont_leave_blank.call(self)) || (dont_leave_blank.is_a?(Symbol) && self.__send__(dont_leave_blank))) set_three_letter_column column if self.__send__(column).blank? end end else set_three_letter_column column if self.__send__(column).blank? end end end end |