Module: Usesguid::ActiveRecordExtensions::ClassMethods
- Defined in:
- lib/usesguid/active_record_extensions.rb
Instance Method Summary collapse
- #guid_column ⇒ Object
- #guid_column=(column) ⇒ Object
- #guid_compression ⇒ Object
- #guid_compression=(compression) ⇒ Object
- #guid_generator ⇒ Object
-
#guid_generator=(generator) ⇒ Object
guid_generator can be :timestamp or :mysql.
- #usesguid(options = {}) ⇒ Object
- #validate_guid(options = {}) ⇒ Object
Instance Method Details
#guid_column ⇒ Object
28 |
# File 'lib/usesguid/active_record_extensions.rb', line 28 def guid_column; class_eval { @guid_column || 'id' } end |
#guid_column=(column) ⇒ Object
27 |
# File 'lib/usesguid/active_record_extensions.rb', line 27 def guid_column=(column); class_eval { @guid_column = column } end |
#guid_compression ⇒ Object
25 |
# File 'lib/usesguid/active_record_extensions.rb', line 25 def guid_compression; class_eval { @guid_compression || 's' } end |
#guid_compression=(compression) ⇒ Object
24 |
# File 'lib/usesguid/active_record_extensions.rb', line 24 def guid_compression=(compression); class_eval { @guid_compression = compression } end |
#guid_generator ⇒ Object
22 |
# File 'lib/usesguid/active_record_extensions.rb', line 22 def guid_generator; class_eval { @guid_generator || :timestamp } end |
#guid_generator=(generator) ⇒ Object
guid_generator can be :timestamp or :mysql
21 |
# File 'lib/usesguid/active_record_extensions.rb', line 21 def guid_generator=(generator); class_eval { @guid_generator = generator } end |
#usesguid(options = {}) ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/usesguid/active_record_extensions.rb', line 30 def usesguid( = {}) [:as] ||= :primary_key class_eval do if [:as] == :primary_key && [:column] self.primary_key = [:column] end before_validation :assign_guid def assign_guid self[ActiveRecord::Base.guid_column] ||= (ActiveRecord::Base.guid_generator == :database ? UUID.send( "#{ActiveRecord::Base.connection.adapter_name.downcase}_create" ) : UUID.).send( "to_#{ActiveRecord::Base.guid_compression}" ) end end end |
#validate_guid(options = {}) ⇒ Object
50 51 52 53 54 |
# File 'lib/usesguid/active_record_extensions.rb', line 50 def validate_guid( ={} ) validates_presence_of( ActiveRecord::Base.guid_column ) validates_uniqueness_of( ActiveRecord::Base.guid_column ) validates_length_of( ActiveRecord::Base.guid_column, :maximum => (ActiveRecord::Base.guid_compression == 's22' ? 22 : 36), :allow_blank => true ) end |