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 (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.