Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Manage custom fields to a mongoid document or a collection
Ruby JavaScript

README.md

CustomFields

Travis CI Status Gemnasium Status

Manage custom fields to a Mongoid document or a collection. This module is one of the core features we implemented in our custom CMS, named LocomotiveCMS. Basically, its aim is to provide to editors a way to manage extra fields to a Mongoid document through, for instance, a web UI.

The main goals:

  • Offering a very secure way to add, edit and delete extra fields to a Mongoid document.
  • Scoping the modifications added to a Mongoid document, so that other documents of the same class won't be updated.

Requirements

  • MongoDB 2.x
  • Mongoid 4.x
  • ActiveSupport 4.2.x

Examples

On a has_many relationship

class Company
  include CustomFields::Source

  has_many :employees

  custom_fields_for :employees
end

class Employee
  include CustomFields::Target

  field :name, String

  belongs_to :company, inverse_of: :employees
end

company = Company.new
company.employees_custom_fields.build label: 'His/her position', name: 'position', type: 'string', required: true

company.save

company.employees.build name: 'Michael Scott', position: 'Regional manager'

another_company = Company.new
employee = another_company.employees.build
employee.position # Returns a `not defined method` error

On the class itself

IN PROGRESS

class Company
  custom_fields_for_itself
end

company = Company.new
company.self_metadata_custom_fields.build label: 'Shipping Address', name: 'address', type: 'text'

company.save

company.self_metadata.address = '700 S Laflin, 60607 Chicago'

another_company = Company.new
other_company.self_metadata.address # Returns a `not defined method` error

Development

Run specs

Run rspec or rake.

Test Coverage

Run COVERAGE=true rspec or COVERAGE=true rake.

Contact

Feel free to contact me at didier at nocoffee dot fr.

License

Copyright (c) 2013-2015 NoCoffee, released under the MIT License (MIT), see LICENSE.

Something went wrong with that request. Please try again.