Module: Acts::AsNode::Base::ClassMethods
- Defined in:
- lib/acts_as_node/acts_as_node.rb
Instance Method Summary collapse
Instance Method Details
#acts_as_node(options = {}) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/acts_as_node/acts_as_node.rb', line 9 def acts_as_node(={}) return if instance_variable_get("@acts_as_node_loaded") instance_variable_set("@acts_as_node_loaded", true) = {:name => 'node', :foreign_key => 'node_id'}.merge() instance_variable_set("@acts_as_node_options", ) belongs_to [:name], :class_name => 'Node' compatible_default_scope %(where("/* SOFT_DELETE_DEFAULT_SCOPE */ `#{self.table_name}`.`#{options[:foreign_key]}` = ?", ::Node.current)) before_save :_assign_node_id define_method "_assign_node_id" do |*opts| self.send("#{options[:foreign_key]}=", ::Node.current.id) if self.send([:foreign_key]).blank? end end |
#compatible_default_scope(scope_str) ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/acts_as_node/acts_as_node.rb', line 25 def compatible_default_scope(scope_str) if Rails.version >= "3.1.0" if public_methods.include?(:default_scope) original_method_name = "_#{rand.object_id.abs}_#{self.name.underscore.gsub('/', '__')}_default_scope" class_eval " class << self\n alias :\#{original_method_name} :default_scope\n def default_scope\n \#{original_method_name}.\#{scope_str}\n end\n end\n SCOPE\n else\n class_eval <<-SCOPE\n def self.default_scope\n \#{scope_str}\n end\n SCOPE\n end\n else\n class_eval <<-SCOPE\n default_scope \#{scope_str}\n SCOPE\n end\nend\n" |