Module: ActiveLdap::Persistence
- Defined in:
- lib/active_ldap/persistence.rb
Instance Method Summary collapse
- #create ⇒ Object
- #create_or_update ⇒ Object
- #delete(options = {}) ⇒ Object
-
#destroy ⇒ Object
destroy.
-
#new_entry? ⇒ Boolean
new_entry?.
-
#persisted? ⇒ Boolean
Return whether the entry is saved entry or not.
- #reload(options = {}) ⇒ Object
-
#save ⇒ Object
save.
- #save! ⇒ Object
- #update ⇒ Object
Instance Method Details
#create ⇒ Object
54 55 56 57 58 59 60 61 |
# File 'lib/active_ldap/persistence.rb', line 54 def create prepare_data_for_saving do |data, ldap_data| attributes = collect_all_attributes(data) add_entry(dn, attributes) @new_entry = false true end end |
#create_or_update ⇒ Object
50 51 52 |
# File 'lib/active_ldap/persistence.rb', line 50 def create_or_update new_entry? ? create : update end |
#delete(options = {}) ⇒ Object
23 24 25 26 27 28 29 30 31 32 |
# File 'lib/active_ldap/persistence.rb', line 23 def delete(={}) if persisted? = { :connection => connection, } self.class.delete_entry(dn, .merge()) end @new_entry = true freeze end |
#destroy ⇒ Object
destroy
Delete this entry from LDAP
18 19 20 21 |
# File 'lib/active_ldap/persistence.rb', line 18 def destroy # TODO: support deleting relations delete end |
#new_entry? ⇒ Boolean
new_entry?
Return whether the entry is new entry in LDAP or not
6 7 8 |
# File 'lib/active_ldap/persistence.rb', line 6 def new_entry? @new_entry end |
#persisted? ⇒ Boolean
Return whether the entry is saved entry or not.
11 12 13 |
# File 'lib/active_ldap/persistence.rb', line 11 def persisted? not new_entry? end |
#reload(options = {}) ⇒ Object
84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
# File 'lib/active_ldap/persistence.rb', line 84 def reload(={}) clear_association_cache = .merge(value: id) _, attributes = search().find do |_dn, _attributes| dn == _dn end if attributes.nil? raise EntryNotFound, _("Can't find DN '%s' to reload") % dn end @ldap_data.update(attributes) classes = extract_object_class!(attributes) self.classes = classes self.attributes = attributes @new_entry = false self end |
#save ⇒ Object
save
Save and validate this object into LDAP either adding or replacing attributes TODO: Relative DN support
39 40 41 |
# File 'lib/active_ldap/persistence.rb', line 39 def save(*) create_or_update end |
#save! ⇒ Object
43 44 45 46 47 48 |
# File 'lib/active_ldap/persistence.rb', line 43 def save!(*) unless create_or_update raise EntryNotSaved, _("entry %s can't be saved") % dn end true end |
#update ⇒ Object
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
# File 'lib/active_ldap/persistence.rb', line 63 def update prepare_data_for_saving do |data, ldap_data| new_dn_value, attributes = collect_modified_attributes(ldap_data, data) modify_entry(@original_dn, attributes) if new_dn_value old_dn_base = DN.parse(@original_dn).parent new_dn_base = dn.clone.parent if old_dn_base == new_dn_base new_superior = nil else new_superior = new_dn_base.to_s end modify_rdn_entry(@original_dn, "#{dn_attribute}=#{DN.escape_value(new_dn_value)}", true, new_superior) end true end end |