Module: ClosureTree::SupportAttributes
Instance Method Summary collapse
- #advisory_lock_name ⇒ Object
- #dont_order_roots ⇒ Object
- #hierarchy_class_name ⇒ Object
- #name_column ⇒ Object
- #name_sym ⇒ Object
- #nulls_last_order_by ⇒ Object
- #order_by ⇒ Object
- #order_by_order(reverse = false) ⇒ Object
- #order_column ⇒ Object
- #order_column_sym ⇒ Object
- #parent_column_name ⇒ Object
- #parent_column_sym ⇒ Object
- #primary_key_column ⇒ Object
- #primary_key_type ⇒ Object
- #quoted_hierarchy_table_name ⇒ Object
- #quoted_id_column_name ⇒ Object
- #quoted_name_column ⇒ Object
- #quoted_order_column(include_table_name = true) ⇒ Object
- #quoted_parent_column_name ⇒ Object
- #quoted_table_name ⇒ Object
- #quoted_value(value) ⇒ Object
- #require_order_column ⇒ Object
-
#short_hierarchy_class_name ⇒ String
Returns the constant name of the hierarchy_class.
-
#t_alias_keyword ⇒ Object
table_name alias keyword , like “AS”.
Instance Method Details
#advisory_lock_name ⇒ Object
7 8 9 |
# File 'lib/closure_tree/support_attributes.rb', line 7 def advisory_lock_name Digest::SHA1.hexdigest("ClosureTree::#{base_class.name}")[0..32] end |
#dont_order_roots ⇒ Object
78 79 80 |
# File 'lib/closure_tree/support_attributes.rb', line 78 def dont_order_roots [:dont_order_roots] || false end |
#hierarchy_class_name ⇒ Object
19 20 21 |
# File 'lib/closure_tree/support_attributes.rb', line 19 def hierarchy_class_name [:hierarchy_class_name] || model_class.to_s + "Hierarchy" end |
#name_column ⇒ Object
39 40 41 |
# File 'lib/closure_tree/support_attributes.rb', line 39 def name_column [:name_column] end |
#name_sym ⇒ Object
43 44 45 |
# File 'lib/closure_tree/support_attributes.rb', line 43 def name_sym name_column.to_sym end |
#nulls_last_order_by ⇒ Object
82 83 84 |
# File 'lib/closure_tree/support_attributes.rb', line 82 def nulls_last_order_by Arel.sql "-#{quoted_order_column} #{order_by_order(true)}" end |
#order_by ⇒ Object
74 75 76 |
# File 'lib/closure_tree/support_attributes.rb', line 74 def order_by [:order] end |
#order_by_order(reverse = false) ⇒ Object
86 87 88 89 90 |
# File 'lib/closure_tree/support_attributes.rb', line 86 def order_by_order(reverse = false) desc = !!(order_by.to_s =~ /DESC\z/) desc = !desc if reverse desc ? 'DESC' : 'ASC' end |
#order_column ⇒ Object
92 93 94 95 96 97 98 99 100 101 |
# File 'lib/closure_tree/support_attributes.rb', line 92 def order_column o = order_by if o.nil? nil elsif o.is_a?(String) o.split(' ', 2).first else o.to_s end end |
#order_column_sym ⇒ Object
107 108 109 110 |
# File 'lib/closure_tree/support_attributes.rb', line 107 def order_column_sym require_order_column order_column.to_sym end |
#parent_column_name ⇒ Object
31 32 33 |
# File 'lib/closure_tree/support_attributes.rb', line 31 def parent_column_name [:parent_column_name] end |
#parent_column_sym ⇒ Object
35 36 37 |
# File 'lib/closure_tree/support_attributes.rb', line 35 def parent_column_sym parent_column_name.to_sym end |
#primary_key_column ⇒ Object
23 24 25 |
# File 'lib/closure_tree/support_attributes.rb', line 23 def primary_key_column model_class.columns.detect { |ea| ea.name == model_class.primary_key } end |
#primary_key_type ⇒ Object
27 28 29 |
# File 'lib/closure_tree/support_attributes.rb', line 27 def primary_key_type primary_key_column.type end |
#quoted_hierarchy_table_name ⇒ Object
58 59 60 |
# File 'lib/closure_tree/support_attributes.rb', line 58 def quoted_hierarchy_table_name connection.quote_table_name hierarchy_table_name end |
#quoted_id_column_name ⇒ Object
62 63 64 |
# File 'lib/closure_tree/support_attributes.rb', line 62 def quoted_id_column_name connection.quote_column_name model_class.primary_key end |
#quoted_name_column ⇒ Object
70 71 72 |
# File 'lib/closure_tree/support_attributes.rb', line 70 def quoted_name_column connection.quote_column_name name_column end |
#quoted_order_column(include_table_name = true) ⇒ Object
112 113 114 115 116 |
# File 'lib/closure_tree/support_attributes.rb', line 112 def quoted_order_column(include_table_name = true) require_order_column prefix = include_table_name ? "#{quoted_table_name}." : "" "#{prefix}#{connection.quote_column_name(order_column)}" end |
#quoted_parent_column_name ⇒ Object
66 67 68 |
# File 'lib/closure_tree/support_attributes.rb', line 66 def quoted_parent_column_name connection.quote_column_name parent_column_name end |
#quoted_table_name ⇒ Object
11 12 13 |
# File 'lib/closure_tree/support_attributes.rb', line 11 def quoted_table_name connection.quote_table_name(table_name) end |
#quoted_value(value) ⇒ Object
15 16 17 |
# File 'lib/closure_tree/support_attributes.rb', line 15 def quoted_value(value) value.is_a?(Numeric) ? value : quote(value) end |
#require_order_column ⇒ Object
103 104 105 |
# File 'lib/closure_tree/support_attributes.rb', line 103 def require_order_column raise ":order value, '#{[:order]}', isn't a column" if order_column.nil? end |
#short_hierarchy_class_name ⇒ String
Returns the constant name of the hierarchy_class
54 55 56 |
# File 'lib/closure_tree/support_attributes.rb', line 54 def short_hierarchy_class_name hierarchy_class_name.split('::').last end |
#t_alias_keyword ⇒ Object
table_name alias keyword , like “AS”. When used on table name alias, Oracle Database don’t support used ‘AS’
119 120 121 |
# File 'lib/closure_tree/support_attributes.rb', line 119 def t_alias_keyword (ActiveRecord::Base.connection.adapter_name.to_sym == :OracleEnhanced) ? "" : "AS" end |