lib/arrest/attributes/belongs_to.rb in arrest-0.0.82 vs lib/arrest/attributes/belongs_to.rb in arrest-0.0.83.crud

- old
+ new

@@ -15,35 +15,36 @@ else "#{name}_id" end end - def create_and_add_attribute(field_name, polymorphic, read_only, foreign_key, class_name) + def create_and_add_attribute(field_name, polymorphic, actions, foreign_key, class_name) if polymorphic - add_attribute(PolymorphicAttribute.new(field_name.to_sym, read_only)) + add_attribute(PolymorphicAttribute.new(field_name.to_sym, actions)) else - add_attribute(BelongsToAttribute.new(field_name.to_sym, read_only, String, foreign_key, class_name)) + add_attribute(BelongsToAttribute.new(field_name.to_sym, actions, String, foreign_key, class_name)) end end def belongs_to(*args) arg = args[0] name = arg.to_s.downcase class_name = StringUtils.classify(name) foreign_key = "#{StringUtils.underscore(ClassUtils.simple_name(self))}_id" params = args[1] unless args.length < 2 + actions = [:create, :retrieve, :update, :delete] if params - read_only = params[:read_only] == true + actions = params[:actions] if params[:actions] polymorphic = !!params[:polymorphic] class_name = params[:class_name].to_s unless params[:class_name] == nil foreign_key = params[:foreign_key].to_s unless params[:foreign_key] == nil end field_name = create_field_name(name, params, polymorphic) - create_and_add_attribute(field_name, polymorphic, read_only, foreign_key, class_name) + create_and_add_attribute(field_name, polymorphic, actions, foreign_key, class_name) send :define_method, name do val = self.send(field_name) if val.blank? return nil @@ -52,15 +53,15 @@ @belongs_tos ||= {} @belongs_tos[name] ||= begin if polymorphic clazz = self.class.json_type_to_class(val.type) - clazz.find(self.context, val.id) + id = val.id else - Arrest::Source.mod.const_get(class_name).find(self.context, val) + clazz = Arrest::Source.mod.const_get(class_name) + id = val end - rescue Errors::DocumentNotFoundError => e - raise Errors::DocumentNotFoundError, "Couldnt find a #{class_name} with id #{val}" + clazz.find(self.context, id) end end end end