def acts_as_nested_set(options = {})
configuration = { :parent_column => "parent_id", :left_column => "lft", :right_column => "rgt", :scope => "1 = 1" }
configuration.update(options) if options.is_a?(Hash)
configuration[:scope] = "#{configuration[:scope]}_id".intern if configuration[:scope].is_a?(Symbol) && configuration[:scope].to_s !~ /_id$/
if configuration[:scope].is_a?(Symbol)
scope_condition_method = %(
def scope_condition
if #{configuration[:scope].to_s}.nil?
"#{configuration[:scope].to_s} IS NULL"
else
"#{configuration[:scope].to_s} = \#{#{configuration[:scope].to_s}}"
end
end
)
else
scope_condition_method = "def scope_condition() \"#{configuration[:scope]}\" end"
end
class_eval "include ActiveRecord::Acts::NestedSet::InstanceMethods\n\n\#{scope_condition_method}\n\ndef left_col_name() \"\#{configuration[:left_column]}\" end\n\ndef right_col_name() \"\#{configuration[:right_column]}\" end\n\ndef parent_column() \"\#{configuration[:parent_column]}\" end\n\n"
end