Skip to content

Instantly share code, notes, and snippets.

@tejo
Created October 31, 2011 10:33
Show Gist options
  • Save tejo/1327253 to your computer and use it in GitHub Desktop.
Save tejo/1327253 to your computer and use it in GitHub Desktop.
class Node < ActiveRecord::Base
attr_accessor :related_nodes_ids
after_save :save_related_nodes
before_destroy :clear_related_nodes
def related_nodes=(nodes_ids)
@related_nodes_ids = nodes_ids.compact.reject { |s| s.blank? }
end
def related_nodes
self.id.nil? ? [] : Node.joins('LEFT OUTER JOIN related_nodes ON related_nodes.related_node_id = nodes.id').where('related_nodes.node_id' => self.id)
end
def save_related_nodes
return if @related_nodes_ids.nil?
clear_related_nodes
@related_nodes_ids.each do |related_node_id|
RelatedNode.create!(:node_id => self.id, :related_node_id => related_node_id)
end
end
def clear_related_nodes
RelatedNode.delete_all(:node_id => self.id)
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment