Sha256: 9d322933d4e3d06c5a1378bb33aeaf4005452a8ad7cfe64a2743644beb1275e0
Contents?: true
Size: 1.79 KB
Versions: 2
Compression:
Stored size: 1.79 KB
Contents
module VestalVersions # Provides a way for information to be associated with specific versions as to who was # responsible for the associated update to the parent. module Users extend ActiveSupport::Concern included do attr_accessor :updated_by Version.class_eval{ include UserVersionMethods } end # Methods added to versioned ActiveRecord::Base instances to enable versioning with additional # user information. private # Overrides the +version_attributes+ method to include user information passed into the # parent object, by way of a +updated_by+ attr_accessor. def version_attributes super.merge(:user => updated_by) end end # Instance methods added to VestalVersions::Version to accomodate incoming user information. module UserVersionMethods extend ActiveSupport::Concern included do belongs_to :user, :polymorphic => true alias_method_chain :user, :name alias_method_chain :user=, :name end # Overrides the +user+ method created by the polymorphic +belongs_to+ user association. If # the association is absent, defaults to the +user_name+ string column. This allows # VestalVersions::Version#user to either return an ActiveRecord::Base object or a string, # depending on what is sent to the +user_with_name=+ method. def user_with_name user_without_name || user_name end # Overrides the +user=+ method created by the polymorphic +belongs_to+ user association. # Based on the class of the object given, either the +user+ association columns or the # +user_name+ string column is populated. def user_with_name=(value) case value when ActiveRecord::Base then self.user_without_name = value else self.user_name = value end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
houston-vestal_versions-2.0.1 | lib/vestal_versions/users.rb |
houston-vestal_versions-2.0.0 | lib/vestal_versions/users.rb |