Sha256: 0ce6e1f6dbecf25a9dbf257ae0f290e03ab6f9e0c304b8860f3bda8fce8633ba
Contents?: true
Size: 1.05 KB
Versions: 1
Compression:
Stored size: 1.05 KB
Contents
module BraintreeRails module Association module ClassMethods def has_many(name, options) define_association_reader(name, options.merge(:foreign_key => :presence)) end def belongs_to(name, options) define_association_reader(name, options) define_association_writer(name, options) end def has_one(name, options) belongs_to(name, options) end def define_association_reader(name, options) define_method(name) do value = instance_variable_get("@#{name}") return value if value.present? value = self.send(options[:foreign_key]) value &&= options[:class].new(value) instance_variable_set("@#{name}", value) end end def define_association_writer(name, options) define_method("#{name}=") do |value| value &&= options[:class].new(value) instance_variable_set("@#{name}", value) end end end def self.included(receiver) receiver.extend ClassMethods end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
braintree-rails-1.1.0 | lib/braintree_rails/association.rb |