Class: ActiveNomad::Base
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- ActiveNomad::Base
- Defined in:
- lib/active_nomad.rb
Defined Under Namespace
Classes: FakeAdapter
Class Method Summary collapse
-
.attribute(name, type, options = {}) ⇒ Object
Declare a column.
-
.columns ⇒ Object
:nodoc:.
-
.from_json(string) ⇒ Object
Deserialize this record from a JSON string returned by #to_ordered_json.
-
.from_query_string(string) ⇒ Object
Deserialize this record from a query string returned by #to_ordered_query_string.
-
.from_serialized_attributes(serialized_attributes) ⇒ Object
Recreate an object from the serialized attributes returned by #to_serialized_attributes.
- .inspect ⇒ Object
-
.reset_column_information ⇒ Object
:nodoc:.
-
.transaction ⇒ Object
Override to provide custom transaction semantics.
Instance Method Summary collapse
-
#destroy ⇒ Object
Destroy the object.
-
#to_destroy(&proc) ⇒ Object
Tell this record how to destroy itself.
-
#to_ordered_json ⇒ Object
Serialize this record as a JSON string.
-
#to_ordered_query_string ⇒ Object
Serialize this record as a query string.
-
#to_save(&proc) ⇒ Object
Tell this record how to save itself.
-
#to_serialized_attributes ⇒ Object
Return an ActiveSupport::OrderedHash of serialized attributes.
Class Method Details
.attribute(name, type, options = {}) ⇒ Object
Declare a column.
Works like #add_column in a migration:
column :name, :string, :limit => 1, :null => false, :default => 'Joe'
147 148 149 150 151 |
# File 'lib/active_nomad.rb', line 147 def attribute(name, type, ={}) sql_type = FAKE_ADAPTER.type_to_sql(type, [:limit], [:precision], [:scale]) columns << ActiveRecord::ConnectionAdapters::Column.new(name.to_s, [:default], sql_type, [:null] != false) reset_column_information end |
.columns ⇒ Object
:nodoc:
153 154 155 |
# File 'lib/active_nomad.rb', line 153 def columns # :nodoc: @columns ||= superclass.columns.dup end |
.from_json(string) ⇒ Object
Deserialize this record from a JSON string returned by #to_ordered_json.
87 88 89 90 91 92 93 94 95 |
# File 'lib/active_nomad.rb', line 87 def self.from_json(string) return new if string.blank? begin serialized_attributes = JSON.parse(string) rescue JSON::ParserError serialized_attributes = {} end from_serialized_attributes(serialized_attributes) end |
.from_query_string(string) ⇒ Object
Deserialize this record from a query string returned by #to_ordered_query_string.
64 65 66 67 68 69 70 71 72 |
# File 'lib/active_nomad.rb', line 64 def self.from_query_string(string) return new if string.blank? serialized_attributes = {} string.strip.split(/&/).map do |pair| name, value = pair.split(/=/, 2) serialized_attributes[CGI.unescape(name)] = CGI.unescape(value) end from_serialized_attributes(serialized_attributes) end |
.from_serialized_attributes(serialized_attributes) ⇒ Object
Recreate an object from the serialized attributes returned by #to_serialized_attributes.
40 41 42 43 44 45 46 |
# File 'lib/active_nomad.rb', line 40 def self.from_serialized_attributes(serialized_attributes) serialized_attributes = serialized_attributes.dup columns_hash.each do |name, column| serialized_attributes[name] ||= column.default end instantiate(serialized_attributes) end |
.inspect ⇒ Object
173 174 175 |
# File 'lib/active_nomad.rb', line 173 def inspect (n = name).blank? ? '(anonymous)' : n end |
.reset_column_information ⇒ Object
:nodoc:
157 158 159 160 161 162 |
# File 'lib/active_nomad.rb', line 157 def reset_column_information # :nodoc: # Reset everything, except the column information. columns = @columns super @columns = columns end |
.transaction ⇒ Object
Override to provide custom transaction semantics.
The default #transaction simply yields to the given block.
169 170 171 |
# File 'lib/active_nomad.rb', line 169 def transaction yield end |
Instance Method Details
#destroy ⇒ Object
Destroy the object.
The default is to call the block registered with #to_destroy. Override if you don’t want to use #to_destroy.
103 104 105 106 107 108 |
# File 'lib/active_nomad.rb', line 103 def destroy if @destroy_proc @destroy_proc.call(self) end self end |
#to_destroy(&proc) ⇒ Object
Tell this record how to destroy itself.
16 17 18 |
# File 'lib/active_nomad.rb', line 16 def to_destroy(&proc) @destroy_proc = proc end |
#to_ordered_json ⇒ Object
Serialize this record as a JSON string.
Attributes are sorted by name.
79 80 81 |
# File 'lib/active_nomad.rb', line 79 def to_ordered_json to_serialized_attributes.to_json end |
#to_ordered_query_string ⇒ Object
Serialize this record as a query string.
Attributes are sorted by name.
53 54 55 56 57 58 |
# File 'lib/active_nomad.rb', line 53 def to_ordered_query_string to_serialized_attributes.map do |name, value| next nil if value.nil? "#{CGI.escape(name)}=#{CGI.escape(value)}" end.compact.sort.join('&') end |
#to_save(&proc) ⇒ Object
Tell this record how to save itself.
9 10 11 |
# File 'lib/active_nomad.rb', line 9 def to_save(&proc) @save_proc = proc end |
#to_serialized_attributes ⇒ Object
Return an ActiveSupport::OrderedHash of serialized attributes.
Attributes are sorted by name. Each value is either a string or nil.
26 27 28 29 30 31 32 33 34 |
# File 'lib/active_nomad.rb', line 26 def to_serialized_attributes attributes = ActiveSupport::OrderedHash.new columns = self.class.columns_hash @attributes.sort.each do |name, value| column = columns[name] attributes[name] = serialize_value(send(name), column ? column.type : :string) end attributes end |