/mongoid_userstamp

Userstamp for created and updated columns within mongoid

Primary LanguageRubyMIT LicenseMIT

WARNING

This fork is INCOMPATIBLE with upstream due to different default field names

This fork uses actual mongoid belongs_to relations instead of low level work with BSON fields. Primary reason for doing this is to support eager loading for creator/updater relation.

Also, this gem uses RequestStore instead of a thread local variable.

Current user is availiable to you any time via RequestStore.store[:user]

MongoidUserstamp adds stamp columns for created by and updated by information within Rails applications using Mongoid ODM.

Version Support

MongoidUserstamp is tested on the following versions:

  • Ruby 2.1.2
  • Rails 4
  • Mongoid 4

Install

  gem 'glebtv_mongoid_userstamp'

Usage

  # Default config
  Mongoid::Userstamp.config do |c|

    # Default config values

    c.user_reader = :current_user
    c.user_model = :user

    c.creator_field = :creator
    c.updater_field = :updater

  end

  # Example model
  class Person
    include Mongoid::Document
    include Mongoid::Userstamp
  end
 
  # Create instance
  p = Person.create

  # Updater ObjectID or nil
  p.updater_id
  # => BSON::ObjectId('4f7c719f476da850ba000039')

  # Updater instance or nil
  p.updater
  # => <User _id: 4f7c719f476da850ba000039>

  # Set updater manually (usually not required)
  p.updater = my_user # can be a Mongoid::Document or a BSON::ObjectID
  # => sets updated_by to my_user's ObjectID

  # Creator ObjectID or nil
  p.creator_id
  # => BSON::ObjectId('4f7c719f476da850ba000039')

  # Creator instance or nil
  p.creator
  # => <User _id: 4f7c719f476da850ba000039>

  # Set creator manually (usually not required)
  p.creator = my_user # can be a Mongoid::Document or a BSON::ObjectID
  # => sets created_by to my_user._id

Contributing

Fork -> Patch -> Spec -> Push -> Pull Request

Please use Ruby 1.9.3 hash syntax, as Mongoid 3 requires Ruby >= 1.9.3

Authors

Copyright

Copyright (c) 2012-2013 Thomas Boerger Programmierung http://www.tbpro.de Copyright (c) 2014 glebtv http://rocketscience.pro

Licensed under the MIT License (MIT). Refer to LICENSE for details.