def assign_attributes obj, yml
reflections = self.reflect_on_all_associations
yml.keys.each do |attr|
if obj.respond_to?(attr)
obj.send(attr+"=" , yml[attr])
else
reflections.select{|r| attr.start_with?(r.name.to_s+"_by_")}.each do |r|
finder = [:has_one, :belongs_to].include?(r.macro) ? "find" : "find_all"
if attr.index("_and_")
objects = r.klass.send(attr.gsub(r.name.to_s, finder), *(yml[attr]))
else
objects = r.klass.send(attr.gsub(r.name.to_s, finder), yml[attr])
end
obj.send(r.name.to_s+"=", objects) if objects.present?
end
end
end
end