New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

rails_admin_draft

Package Overview
Dependencies
Maintainers
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

rails_admin_draft

  • 0.1.3
  • Rubygems
  • Socket score

Version published
Maintainers
2
Created
Source

Rails Admin Draft

Rails Admin Draft allows you to make drafts of the desired models in rails_admin.

Installation

Add this line to your application's Gemfile:

gem 'rails_admin_draft'

And then execute:

$ bundle install

Or install it yourself as:

$ gem install rails_admin_draft

Usage

Add draft columns to your table

Create migration

$ rails generate draft_migration --table [TABLE]

Run the migration

$ rake db:migrate

Add draft to your model

class MyModel < ApplicationRecord
  include DraftConcern
  has_draft
end

Add draft to your rails_admin model config

RailsAdmin.config do |config|
  config.model 'MyModel' do
    has_draft true
  end
end

Add copy_as_draft action in your rails_admin config

You can skip this part if you don't want the copy_as_draft action in the listings.

RailsAdmin.config do |config|
  config.actions do
    copy_as_draft
  end
end

Additional information

Available scopes

When your model includes DraftConcern, you have access to the following scopes:

  • draft: Records where draft_status = 'draft'
  • published: Records where draft_status = 'published'

Available rails_admin scopes

When your model includes DraftConcern, you have access to the following scopes:

  • rails_admin_all: All records
  • rails_admin_draft: Records where draft_status = 'draft'
  • rails_admin_published: Records where draft_status = 'draft'

These can be used to add scopes in rails_admin listing:

RailsAdmin.config do |config|
  config.model 'MyModel' do
    has_draft true
    list do
      scopes [:rails_admin_all, :rails_admin_published, :rails_admin_draft]
    end
  end
end

Available methods

When your model includes DraftConcern, you have access to the following methods:

  • title_with_draft_status: Adds 'draft' to your model's title if it's a draft. Used to display in rails_admin listing. By default, the title attribute is title. If you want to change it, override the title_attribute class method in your model.
  • is_draft?: Returns true if your model is a draft
  • is_published?: Returns true if your model is published

Overridable class methods

When your model includes DraftConcern, you can override these class methods:

  • unique_text_fields: List of string fields that are unique. When you copy a published record as draft, the string 'draft-' will be added at the beginning of each field to avoid unique constraint errors. The string 'draft-' is removed when the record is published. By default, the only field is slug.
  • except_upload_attributes: When you copy a record as draft, its uploads are also copied. To prevent an upload of being copied, add it to this list. You can also add attributes in associated tables. Ex: [ :image, { relation_name: :associated_model, attribute: :image } ]
  • title_attribute: The attribute that represent the title/name of the record. By default, it is set to title. Used by the title_with_draft_status method.

How to handle unique indexes

Since this gem allows a published record to be copied as draft, you have to make sure your unique indexes are composite indexes including the draft_status attribute.

FAQs

Package last updated on 14 Feb 2023

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc