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