Method: Zena::Acts::SecureNode::InstanceMethods#ref

Defined in:
lib/zena/acts/secure_node.rb

#refObject

Reference to validate access rights



328
329
330
331
332
333
334
335
336
337
338
339
340
341
# File 'lib/zena/acts/secure_node.rb', line 328

def ref
  # new record and self as reference (creating root node)
  return self if ref_field == :id && new_record?
  if !@ref || (@ref.id != ref_field_id)
    # no ref or ref changed
    @ref = secure(ref_class) { ref_class.find_by_id(ref_field_id) }
  end
  if @ref && (self.new_record? || (:id == ref_field) || (self[:id] != @ref[:id] ))
    # reference is accepted only if it is not the same as self or self is root (ref_field==:id set by Node)
    @ref.freeze
  else
    nil
  end
end