lib/reader_user.rb in radiant-reader-extension-3.0.11 vs lib/reader_user.rb in radiant-reader-extension-3.0.13

- old
+ new

@@ -1,18 +1,35 @@ module ReaderUser def self.included(base) + extend ClassMethods base.class_eval do - has_one :reader - before_update :update_reader + has_one :reader, :dependent => :nullify + attr_accessor :skip_reader_update + include InstanceMethods + before_save :update_reader # there is already a before_update call that hashes the password, so we need to come in before that end end + + module ClassMethods + + end - def update_reader - if self.reader - Reader.user_columns.each { |att| self.reader.send("#{att.to_s}=", send(att)) if send("#{att.to_s}_changed?") } - self.reader.password_confirmation = password if password_changed? - self.reader.save! if self.reader.changed? + module InstanceMethods + def update_reader + if !new_record? && self.reader && !self.skip_reader_update + changed_columns = Reader.user_columns & self.changed + att = self.attributes.slice(*changed_columns) + self.reader.send :update_with, att if att.any? + end + true end + + def update_with(att) + self.skip_reader_update = true + self.confirm_password = false + p "updating user attributes with #{att.inspect}" + self.update_attributes(att) + self.skip_reader_update = false + end end - end