class Liquid::Rails::Drop
Attributes
_associations[RW]
_attributes[RW]
object[R]
Public Class Methods
associate(type, attrs)
click to toggle source
# File lib/liquid4-rails/drops/drop.rb, line 60 def self.associate(type, attrs) options = attrs.extract_options! self._associations = _associations.dup attrs.each do |attr| next if method_defined?(attr) define_method attr do value = instance_variable_get("@_#{attr}") return value if value association = object.send(attr) return nil if association.nil? drop_instance = Liquid::Rails::Drop.dropify(association, options) instance_variable_set("@_#{attr}", drop_instance) end self._associations[attr] = { type: type, options: options } end end
attributes(*attrs)
click to toggle source
# File lib/liquid4-rails/drops/drop.rb, line 15 def self.attributes(*attrs) @_attributes.concat attrs attrs.each do |attr| next if method_defined?(attr) define_method(attr) do object.send(attr) if object.respond_to?(attr, true) end end end
belongs_to(*attrs)
click to toggle source
# File lib/liquid4-rails/drops/drop.rb, line 52 def self.belongs_to(*attrs) associate(:belongs_to, attrs) end
drop_class_for(resource)
click to toggle source
By default, `Product` maps to `ProductDrop`.
Array of products maps to `Liquid::Rails::CollectionDrop`.
# File lib/liquid4-rails/drops/drop.rb, line 29 def self.drop_class_for(resource) if resource.respond_to?(:to_ary) Liquid::Rails::CollectionDrop else if self == Liquid::Rails::Drop resource.drop_class || Liquid::Rails::Drop else self end end end
dropify(resource, options={})
click to toggle source
Create a drop instance when it cannot be inferred.
# File lib/liquid4-rails/drops/drop.rb, line 42 def self.dropify(resource, options={}) drop_class = if options[:class_name] options[:class_name].constantize else drop_class_for(resource) end drop_class.new(resource, options.except(:class_name)) end
has_many(*attrs)
click to toggle source
# File lib/liquid4-rails/drops/drop.rb, line 56 def self.has_many(*attrs) associate(:has_many, attrs) end
inherited(base)
click to toggle source
# File lib/liquid4-rails/drops/drop.rb, line 10 def self.inherited(base) base._attributes = [] base._associations = {} end
new(object, options={})
click to toggle source
Wraps an object in a new instance of the drop.
# File lib/liquid4-rails/drops/drop.rb, line 83 def initialize(object, options={}) @object = object end
Public Instance Methods
as_json(options={})
click to toggle source
# File lib/liquid4-rails/drops/drop.rb, line 93 def as_json(options={}) attributes.as_json(options) end
attributes()
click to toggle source
# File lib/liquid4-rails/drops/drop.rb, line 87 def attributes @attributes ||= self.class._attributes.dup.each_with_object({}) do |name, hash| hash[name.to_s] = send(name) end end
before_method(method)
click to toggle source
# File lib/liquid4-rails/drops/drop.rb, line 101 def before_method(method) attributes[method.to_s] end
inspect()
click to toggle source
# File lib/liquid4-rails/drops/drop.rb, line 105 def inspect "#<#{self.class.name} @object: #{object.inspect} @attributes: #{attributes.inspect}>" end
to_json(options={})
click to toggle source
# File lib/liquid4-rails/drops/drop.rb, line 97 def to_json(options={}) as_json.to_json(options) end