module IronBank::Associations::ClassMethods
Define class methods
Public Instance Methods
with_many(name, options = {})
click to toggle source
# File lib/iron_bank/associations.rb, line 32 def with_many(name, options = {}) resource_name = options.fetch( :resource_name, IronBank::Utils.camelize(name.to_s.chop) ) foreign_key = options.fetch( :foreign_key, "#{IronBank::Utils.underscore(object_name)}_id" ) define_method(name) do with_memoization(name) do # NOTE: we retrieve the constant here to prevent the need to order # our `require <file>` statements in `iron_bank.rb` klass = IronBank::Resources.const_get(resource_name) conditions = options.fetch(:conditions, {}). merge("#{foreign_key}": id) items = klass.where(conditions) IronBank::Collection.new(klass, conditions, items) end end alias_name = options[:alias] alias_method alias_name, name if alias_name end
with_one(name, options = {})
click to toggle source
# File lib/iron_bank/associations.rb, line 10 def with_one(name, options = {}) resource_name = options.fetch( :resource_name, IronBank::Utils.camelize(name) ) foreign_key = options.fetch(:foreign_key, "#{name}_id") define_method(name) do return unless (foreign_key_value = public_send(foreign_key)) with_memoization(name) do # NOTE: we retrieve the constant here to prevent the need to order # our `require <file>` statements in `iron_bank.rb` klass = IronBank::Resources.const_get(resource_name) klass.find(foreign_key_value) end end alias_name = options[:alias] alias_method alias_name, name if alias_name end