Class: NinjaModel::Reflection::AssociationReflection
Instance Attribute Summary collapse
#macro, #name, #ninja_model, #options
Instance Method Summary
collapse
#class_name
Constructor Details
#initialize(macro, name, options, ninja_model) ⇒ AssociationReflection
Returns a new instance of AssociationReflection.
72
73
74
75
|
# File 'lib/ninja_model/reflection.rb', line 72
def initialize(macro, name, options, ninja_model)
super
@collection = macro.in?([:has_many])
end
|
Instance Attribute Details
#original_build_association_called ⇒ Object
66
67
68
|
# File 'lib/ninja_model/reflection.rb', line 66
def original_build_association_called
@original_build_association_called
end
|
Instance Method Details
#association_class ⇒ Object
#association_foreign_key ⇒ Object
111
112
113
|
# File 'lib/ninja_model/reflection.rb', line 111
def association_foreign_key
@association_foreign_key ||= @options[:association_foreign_key] || class_name.foreign_key
end
|
#association_primary_key(klass = nil) ⇒ Object
115
116
117
|
# File 'lib/ninja_model/reflection.rb', line 115
def association_primary_key(klass = nil)
options[:primary_key] || primary_key(klass || self.klass)
end
|
#belongs_to? ⇒ Boolean
150
151
152
|
# File 'lib/ninja_model/reflection.rb', line 150
def belongs_to?
macro == :belongs_to
end
|
#build_association(*options, &block) ⇒ Object
77
78
79
80
|
# File 'lib/ninja_model/reflection.rb', line 77
def build_association(*options, &block)
@original_build_association_called
klass.new(*options, &block)
end
|
#chain ⇒ Object
124
125
126
|
# File 'lib/ninja_model/reflection.rb', line 124
def chain
[self]
end
|
#collection? ⇒ Boolean
142
143
144
|
# File 'lib/ninja_model/reflection.rb', line 142
def collection?
@collection
end
|
#conditions ⇒ Object
128
129
130
|
# File 'lib/ninja_model/reflection.rb', line 128
def conditions
[[options[:conditions]].compact]
end
|
#foreign_key ⇒ Object
90
91
92
|
# File 'lib/ninja_model/reflection.rb', line 90
def foreign_key
@foreign_key ||= options[:foreign_key] || derive_foreign_key
end
|
#foreign_type ⇒ Object
99
100
101
|
# File 'lib/ninja_model/reflection.rb', line 99
def foreign_type
@foreign_type ||= options[:foreign_type] || "#{name}_type"
end
|
#has_inverse? ⇒ Boolean
132
133
134
|
# File 'lib/ninja_model/reflection.rb', line 132
def has_inverse?
@options[:inverse_of]
end
|
#inverse_of ⇒ Object
136
137
138
139
140
|
# File 'lib/ninja_model/reflection.rb', line 136
def inverse_of
if has_inverse?
@inverse_of ||= klass.reflect_on_association(options[:inverse_of])
end
end
|
#klass ⇒ Object
68
69
70
|
# File 'lib/ninja_model/reflection.rb', line 68
def klass
@klass ||= ninja_model.send(:compute_type, class_name)
end
|
#ninja_model_primary_key ⇒ Object
Also known as:
active_record_primary_key
119
120
121
|
# File 'lib/ninja_model/reflection.rb', line 119
def ninja_model_primary_key
@ninja_model_primary_key ||= options[:primary_key] || primary_key(ninja_model)
end
|
#primary_key_column ⇒ Object
107
108
109
|
# File 'lib/ninja_model/reflection.rb', line 107
def primary_key_column
@primary_key_column ||= klass.columns.find { |c| c.name == klass.primary_key }
end
|
#primary_key_name ⇒ Object
94
95
96
|
# File 'lib/ninja_model/reflection.rb', line 94
def primary_key_name
foreign_key
end
|
#quoted_table_name ⇒ Object
86
87
88
|
# File 'lib/ninja_model/reflection.rb', line 86
def quoted_table_name
raise NotImplementedError, "quoted_table_name is not implemented in NinjaModel"
end
|
#table_name ⇒ Object
82
83
84
|
# File 'lib/ninja_model/reflection.rb', line 82
def table_name
raise NotImplementedError, "table_name is not implemented in NinjaModel"
end
|
#type ⇒ Object
103
104
105
|
# File 'lib/ninja_model/reflection.rb', line 103
def type
@type ||= options[:as] && "#{options[:as]}_type"
end
|
#validate? ⇒ Boolean
146
147
148
|
# File 'lib/ninja_model/reflection.rb', line 146
def validate?
!options[:validate].nil? ? options[:validate] : (options[:autosave] == true || macro == :has_many)
end
|