module Ardm::Ar::Associations
Public Class Methods
convert_options(klass, options, *keep)
click to toggle source
Convert options from DM style to AR style.
Keep any unknown keys to use as conditions.
# File lib/ardm/ar/associations.rb, line 11 def self.convert_options(klass, options, *keep) keep += [:class_name, :foreign_key] ar = options.dup ar[:class_name] = ar.delete(:model) if ar[:model] ar[:foreign_key] = ar.delete(:child_key) if ar[:child_key] ar[:source] = ar.delete(:via) if ar[:via] ar[:foreign_key] = ar[:foreign_key].first if ar[:foreign_key].respond_to?(:to_ary) if ar[:foreign_key] && property = klass.properties[ar[:foreign_key]] ar[:foreign_key] = property.field end if Ardm.rails3? if (conditions = ar.slice!(*keep)).any? ar[:conditions] = conditions end [ar] else order = ar.delete(:order) conditions = ar.slice!(*keep) # sigh block = if conditions.any? && order lambda { where(conditions).order(order) } elsif conditions.any? lambda { where(conditions) } elsif order lambda { order(order) } end [block, ar].compact end end