# 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
class NinjaModel::Reflection::AssociationReflection
Attributes
original_build_association_called[RW]
Public Class Methods
new(macro, name, options, ninja_model)
click to toggle source
Calls superclass method
NinjaModel::Reflection::MacroReflection::new
# File lib/ninja_model/reflection.rb, line 72 def initialize(macro, name, options, ninja_model) super @collection = macro.in?([:has_many]) end
Public Instance Methods
association_class()
click to toggle source
# File lib/ninja_model/reflection.rb, line 154 def association_class case macro when :belongs_to Associations::BelongsToAssociation when :has_many Associations::HasManyAssociation when :has_one Associations::HasOneAssociation end end
association_foreign_key()
click to toggle source
# 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)
click to toggle source
# 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?()
click to toggle source
# File lib/ninja_model/reflection.rb, line 150 def belongs_to? macro == :belongs_to end
build_association(*options, &block)
click to toggle source
# File lib/ninja_model/reflection.rb, line 77 def build_association(*options, &block) @original_build_association_called klass.new(*options, &block) end
chain()
click to toggle source
# File lib/ninja_model/reflection.rb, line 124 def chain [self] end
collection?()
click to toggle source
# File lib/ninja_model/reflection.rb, line 142 def collection? @collection end
conditions()
click to toggle source
# File lib/ninja_model/reflection.rb, line 128 def conditions [[options[:conditions]].compact] end
foreign_key()
click to toggle source
# File lib/ninja_model/reflection.rb, line 90 def foreign_key @foreign_key ||= options[:foreign_key] || derive_foreign_key end
foreign_type()
click to toggle source
# File lib/ninja_model/reflection.rb, line 99 def foreign_type @foreign_type ||= options[:foreign_type] || "#{name}_type" end
has_inverse?()
click to toggle source
# File lib/ninja_model/reflection.rb, line 132 def has_inverse? @options[:inverse_of] end
inverse_of()
click to toggle source
# 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()
click to toggle source
# File lib/ninja_model/reflection.rb, line 68 def klass @klass ||= ninja_model.send(:compute_type, class_name) end
ninja_model_primary_key()
click to toggle source
# 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
Also aliased as: active_record_primary_key
primary_key_column()
click to toggle source
primary_key_name()
click to toggle source
# File lib/ninja_model/reflection.rb, line 94 def primary_key_name foreign_key end
quoted_table_name()
click to toggle source
# 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()
click to toggle source
# File lib/ninja_model/reflection.rb, line 82 def table_name raise NotImplementedError, "table_name is not implemented in NinjaModel" end
type()
click to toggle source
# File lib/ninja_model/reflection.rb, line 103 def type @type ||= options[:as] && "#{options[:as]}_type" end
validate?()
click to toggle source
# File lib/ninja_model/reflection.rb, line 146 def validate? !options[:validate].nil? ? options[:validate] : (options[:autosave] == true || macro == :has_many) end
Private Instance Methods
derive_class_name()
click to toggle source
# File lib/ninja_model/reflection.rb, line 167 def derive_class_name class_name = name.to_s.camelize class_name = class_name.singularize if collection? class_name end
derive_foreign_key()
click to toggle source
# File lib/ninja_model/reflection.rb, line 173 def derive_foreign_key if belongs_to? "#{name}_id" elsif options[:as] "#{options[:as]}_id" else ninja_model.name.foreign_key end end
primary_key(klass)
click to toggle source
# File lib/ninja_model/reflection.rb, line 183 def primary_key(klass) klass.primary_key || raise(StandardError, "Unknown primary key for #{klass}") end