Sha256: 509c858c694349079430ca45e0a636e1fd26c1d4da8129e3ad90cb80c70290cc
Contents?: true
Size: 1.2 KB
Versions: 3
Compression:
Stored size: 1.2 KB
Contents
# extended Relation: extracts relation from rows class Relation < ActiveRecord::Base def self.add(row_from, row_to) hsh = normalize(row_from, row_to) Relation.create!(hsh) if Relation.where(hsh).first == nil end def self.delete(row_from, row_to) hsh = normalize(row_from, row_to) Relation.where(hsh).delete_all end def self.references(row, kind) klass, name, id_from = normalize2(kind, row) name = "#{name} #{klass.name}" ids = references_raw(name, id_from) klass.where(id: ids) end def self.followers(kind, row) klass, name, id_to = normalize2(kind, row) name = "#{klass.name} #{name}" ids = followers_raw(name, id_to) klass.where(id: ids) end private def self.name_id(resource) raise 'missing resource' unless resource [resource.class.name, resource.id] end def self.normalize(row_from, row_to) name_from, id_from = name_id(row_from) name_to, id_to = name_id(row_to) name = "#{name_from} #{name_to}" { name: name, x_id: id_from, y_id: id_to } end def self.normalize2(kind, row) klass = kind klass = kind.constantize unless klass.kind_of?(Class) name, id = name_id(row) [klass, name, id] end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
relation-0.2.3 | app/models/relation_ext.rb |
relation-0.2.2 | app/models/relation_ext.rb |
relation-0.2.1 | app/models/relation_ext.rb |