Method: ODBA::IndexCommon#update_target
- Defined in:
- lib/odba/index.rb
#update_target(target) ⇒ Object
:nodoc:
195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 |
# File 'lib/odba/index.rb', line 195 def update_target(target) # :nodoc: target_id = target.odba_id current = current_origin_ids(target_id) old_terms = current.collect { |row| [row[0], row[1]] } origins = proc_instance_origin.call(target) new_terms = [] origins.each { |origin| origin_id = origin.odba_id search_terms(origin).each { |term| new_terms.push([origin_id, term]) } } (old_terms - new_terms).each { |origin_id, terms| delete_target(origin_id, terms, target_id) } (new_terms - old_terms).each { |origin_id, terms| do_update_index(origin_id, terms, target_id) } end |