class NestedRecord::PrimaryKeyCheck
Attributes
params[R]
Public Class Methods
new(klass, pkey_attributes)
click to toggle source
# File lib/nested_record/primary_key_check.rb, line 2 def initialize(klass, pkey_attributes) @klass = klass @pkey_attributes = pkey_attributes @params = [klass, pkey_attributes] end
Public Instance Methods
==(other)
click to toggle source
# File lib/nested_record/primary_key_check.rb, line 14 def ==(other) self.class === other && params == other.params end
Also aliased as: eql?
build_pkey(obj)
click to toggle source
# File lib/nested_record/primary_key_check.rb, line 19 def build_pkey(obj) pkey = { _is_a?: @klass } if obj.is_a? @klass pkey[:_not_equal?] = obj @pkey_attributes.each do |name| pkey[name] = obj.read_attribute(name) end elsif obj.respond_to? :[] @pkey_attributes.each do |name| value = obj[name] if (type = @klass.type_for_attribute(name)) value = type.cast(value) end pkey[name] = value end else fail end pkey end
hash()
click to toggle source
# File lib/nested_record/primary_key_check.rb, line 10 def hash params.hash end
perform!(collection, obj)
click to toggle source
# File lib/nested_record/primary_key_check.rb, line 40 def perform!(collection, obj) pkey = build_pkey(obj) raise NestedRecord::PrimaryKeyError if collection.exists?(pkey) end