{"id":14793,"date":"2021-01-01T16:29:19","date_gmt":"2021-01-01T10:59:19","guid":{"rendered":"https:\/\/www.botreetechnologies.com\/blog\/?p=14793"},"modified":"2021-01-04T11:36:20","modified_gmt":"2021-01-04T06:06:20","slug":"track-records-changes-with-papertrail-gem","status":"publish","type":"post","link":"https:\/\/www.botreetechnologies.com\/blog\/track-records-changes-with-papertrail-gem\/","title":{"rendered":"Track Records Changes with PaperTrail gem"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\"><strong>What is the PaperTrail gem?<\/strong><\/h2>\n\n\n\n<p>The paper trail gem is a wonderful <a href=\"https:\/\/www.botreetechnologies.com\/ruby-on-rails-development\" target=\"_blank\" rel=\"noreferrer noopener\">Ruby on Rails gem<\/a> for tracking all the changes in the model\u2019s data for editing or versioning. After upgrading papertrail gem for an application, you can use it to see how your data looks across different periods. You can take it back to any version of model data. The Ruby on Rails gem \u201cpaper_trail_ allows you to undo all the changes after a record has been destroyed so that you can restore it totally.&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Here are a few features of Paper Trail Ggem:-&nbsp;<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li>The PaperTrail gem allows you to track changes made to your Rails models over time.&nbsp;<\/li><li>Any time a tracked record in your database is changed, it creates a corresponding entry in a <code>PaperTrail::Version table.<\/code>&nbsp;<\/li><li>It accomplishes this by tying into the ActiveRecord callback chain and storing a new version when the record is created, updated, or destroyed.<\/li><\/ul>\n\n\n\n<p>In this article, we will learn how to use papertrail gem. This guide will take you through the process of installation, and using it in a basic app.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p><strong>Also Read: <a href=\"https:\/\/www.botreetechnologies.com\/blog\/ruby-on-rails-gems\/\" target=\"_blank\" rel=\"noreferrer noopener\">10 best Ruby on Rails Gems for Web Development<\/a><\/strong><\/p><\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Installation and Configuration of PaperTrail:<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Add PaperTrail to your gemfile<\/li><\/ul>\n\n\n\n<p><code># Gemfile<\/code><br><code>gem 'paper_trail', '~&gt; 10.3', '&gt;= 10.3.1'<\/code><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Next, create a special table for storing the versions. And run following commands.<\/li><\/ul>\n\n\n\n<p><code>bundle exec rails generate paper_trail:install <\/code><br><code>bundle exec rake db:migrate\n<\/code><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Declare has_paper_trail method in your model to track create, update and destroy.<\/li><\/ul>\n\n\n\n<p><code>class User &lt; ActiveRecord::Base<\/code><br><code>has_paper_trail<\/code><br><code>end<\/code><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>If you have current_user method, you can easily track who is responsible for changes by adding a controller callback.<\/li><\/ul>\n\n\n\n<p><code>class User &lt; ActiveRecord::Base<\/code><br><code>Before_action: set_paper_trail_whodunnit<\/code><br><code>end<\/code><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Basic Usage<\/strong>&nbsp;<ul><li>When you declare a <code>has_paper_trail<\/code> method you get the following methods.<ul><li>user.versions<ul><li>Returns users versions.<\/li><\/ul><\/li><li>user.version<ul><li>Returns user version was reified from, or nil if user live.&nbsp;<\/li><\/ul><\/li><li>user.paper_trail.live?<ul><li>Returns true if this user is current, or false if it is from the previous version.<\/li><\/ul><\/li><li>user.paper_trail.originator<ul><li>Returns who put the user into current state.<\/li><\/ul><\/li><li>user.paper_trail.version_at(timestamp)<ul><li>It will return the user as it looked at a given timestamp.<\/li><\/ul><\/li><li>User.paper_trail.previous_version<ul><li>Returns the user as it was most recently.<\/li><\/ul><\/li><li>User.paper_trail.next_version<ul><li>Returns the user as it became next.<\/li><\/ul><\/li><\/ul><\/li><\/ul><\/li><\/ul>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Configurations<\/strong><ul><li>PaperTrail has some aspects which are configurable for a specific model by passing the <code><strong>has_paper_trail<\/strong><\/code> method in the given model.<\/li><li>Some aspects are configured globally for all models.These settings are assigned directly on <code><strong>paperTrail.config<\/strong><\/code> object.<\/li><li>Put these settings in a rails initializer file such as <code><strong>config\/initializers\/paper_trail.rb<\/strong><\/code>, or in an environment specific file such as <code><strong>config\/initializers\/test.rb<\/strong><\/code>.<ul><li><strong>Global configurations options.<\/strong><\/li><\/ul><\/li><\/ul><\/li><\/ul>\n\n\n\n<p><code># config\/initializers\/paper_trail.rb <\/code><br><code>PaperTrail.config.enabled = true <\/code><br><code>PaperTrail.config.has_paper_trail_defaults = {on: %i[create update destroy]}<\/code> <br><code>PaperTrail.config.version_limit = 3<\/code><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>What is tracked and when<\/strong><ul><li>You can track an event using on option.<\/li><li>has_paper_trails installs callbacks for the specified lifecycle events.<\/li><li>There are four default callbacks which is [:create, :update, :touch, :destroy]<\/li><li>If there are other callbacks in your model, their order relative to those installed by has_paper_trail may matter. If you need to control their order, use the <code><strong>paper_trail_on_*<\/strong><\/code> methods.<\/li><li>Include PaperTrail, but do not install any callbacks. Passing the empty array to \u201c:on\u201d omits callbacks.<\/li><\/ul><\/li><\/ul>\n\n\n\n<p><code>class User&lt; ActiveRecord::Base <\/code><br> <code>has_paper_trail on: [] <\/code><br> <code>paper_trail.on_destroy<\/code> <br> <code>paper_trail.on_update<\/code> <br> <code>paper_trail.on_create<\/code> <br> <code>paper_trail.on_touch<\/code> <br> <code>End<\/code><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>The <code><strong>paper_trail.on_destroy<\/strong><\/code> method can be further configured to happen <code><strong>:before<\/strong><\/code> or <code><strong>:after<\/strong><\/code> the destroy event. In PaperTrail 4, the default is <code><strong>:after<\/strong><\/code>. In PaperTrail 5, the default will be <strong>:before.<\/strong><\/li><\/ul>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Choosing when to save a new version<\/strong><ul><li>You can choose when to save the new version with if and unless option.<\/li><li>PaperTrail 4.0 versions are saved on during after-callback. If you want to save a version based on change attributes use <code><strong>attribute_name_was<\/strong><\/code> instead of <code><strong>attribute_name<\/strong><\/code>.<\/li><\/ul><\/li><\/ul>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Choosing attributes to monitor<\/strong>&nbsp;<ul><li>Ignore changes to certain attributes<\/li><\/ul><\/li><\/ul>\n\n\n\n<p><code>class Article &lt; ActiveRecord::Base<\/code><br>\n<code>has_paper_trail ignore: [:phone_number]<\/code><br>\n<code>end<\/code><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Changes on phone_number attribute will not create a version record.<\/li><li>Also you can specify attributes which you care about using <strong>only<\/strong> options.<\/li><\/ul>\n\n\n\n<p><code>class User&lt; ActiveRecord::Base<\/code><br>\n<code>has_paper_trail only: [:phone_number]<\/code><br>\n<code>end<\/code><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Now only changes on phone_number will create a version record.<\/li><li>You can also skip attributes completely with the skip option. When using ignore if version record created due to some other reasons, these attributes will persist.<\/li><\/ul>\n\n\n\n<p><code>Class User &lt; ActiveRecord::Base<\/code><br>\n<code>has_paper_trail skip: [:image_upload]<\/code><br>\n<code>end<\/code><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Turn PaperTrail off<ul><li>PaperTrail is on by default but in some cases you don&#8217;t want to record versions. At that time turn-off for all threads in the ruby process.<\/li><\/ul><\/li><\/ul>\n\n\n\n<p><code>PaperTrail.enabled = false<\/code><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Do not use this in production unless you have a good understanding of threads vs. processes<\/strong>.<\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Conclusion<\/strong><\/h3>\n\n\n\n<p>So far we have learned how to install PaperTrail gem and use it in a system to keep an eye on records via track. We have seen some basic methods and options given by PaperTrail which are used to.&nbsp;<\/p>\n\n\n\n<p>For more functionality of PaperTrail refer following link:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/github.com\/paper-trail-gem\/paper_trail\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">https:\/\/github.com\/paper-trail-gem\/paper_trail<\/a><\/li><\/ul>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>What is the PaperTrail gem? The paper trail gem is&#8230;<\/p>\n","protected":false},"author":64,"featured_media":14798,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[73,10],"tags":[],"class_list":["post-14793","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ruby-on-rails","category-technology"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Track Records Changes with PaperTrail gem<\/title>\n<meta name=\"description\" content=\"Want to track record changes in Ruby on Rails? You can easily use the PaperTrail Gem and track them without any hassle. Checkout guide on papertrail gem.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.botreetechnologies.com\/blog\/track-records-changes-with-papertrail-gem\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Track Records Changes with PaperTrail gem\" \/>\n<meta property=\"og:description\" content=\"Want to track record changes in Ruby on Rails? You can easily use the PaperTrail Gem and track them without any hassle. Checkout guide on papertrail gem.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.botreetechnologies.com\/blog\/track-records-changes-with-papertrail-gem\/\" \/>\n<meta property=\"og:site_name\" content=\"BoTree Technologies\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/BoTreeTechnologies\/\" \/>\n<meta property=\"article:published_time\" content=\"2021-01-01T10:59:19+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-01-04T06:06:20+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.botreetechnologies.com\/blog\/wp-content\/uploads\/2021\/01\/track-records-with-papertrail-gem.png\" \/>\n\t<meta property=\"og:image:width\" content=\"850\" \/>\n\t<meta property=\"og:image:height\" content=\"479\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Dharmik Salakiya\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@BoTreeTech\" \/>\n<meta name=\"twitter:site\" content=\"@BoTreeTech\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Dharmik Salakiya\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.botreetechnologies.com\/blog\/track-records-changes-with-papertrail-gem\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.botreetechnologies.com\/blog\/track-records-changes-with-papertrail-gem\/\"},\"author\":{\"name\":\"Dharmik Salakiya\",\"@id\":\"https:\/\/www.botreetechnologies.com\/blog\/#\/schema\/person\/72dcc8466ce1aa6c11111731ce677597\"},\"headline\":\"Track Records Changes with PaperTrail gem\",\"datePublished\":\"2021-01-01T10:59:19+00:00\",\"dateModified\":\"2021-01-04T06:06:20+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.botreetechnologies.com\/blog\/track-records-changes-with-papertrail-gem\/\"},\"wordCount\":738,\"image\":{\"@id\":\"https:\/\/www.botreetechnologies.com\/blog\/track-records-changes-with-papertrail-gem\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.botreetechnologies.com\/blog\/wp-content\/uploads\/2021\/01\/track-records-with-papertrail-gem.png\",\"articleSection\":[\"Ruby on Rails\",\"Technology\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.botreetechnologies.com\/blog\/track-records-changes-with-papertrail-gem\/\",\"url\":\"https:\/\/www.botreetechnologies.com\/blog\/track-records-changes-with-papertrail-gem\/\",\"name\":\"Track Records Changes with PaperTrail gem\",\"isPartOf\":{\"@id\":\"https:\/\/www.botreetechnologies.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.botreetechnologies.com\/blog\/track-records-changes-with-papertrail-gem\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.botreetechnologies.com\/blog\/track-records-changes-with-papertrail-gem\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.botreetechnologies.com\/blog\/wp-content\/uploads\/2021\/01\/track-records-with-papertrail-gem.png\",\"datePublished\":\"2021-01-01T10:59:19+00:00\",\"dateModified\":\"2021-01-04T06:06:20+00:00\",\"author\":{\"@id\":\"https:\/\/www.botreetechnologies.com\/blog\/#\/schema\/person\/72dcc8466ce1aa6c11111731ce677597\"},\"description\":\"Want to track record changes in Ruby on Rails? You can easily use the PaperTrail Gem and track them without any hassle. Checkout guide on papertrail gem.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.botreetechnologies.com\/blog\/track-records-changes-with-papertrail-gem\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.botreetechnologies.com\/blog\/track-records-changes-with-papertrail-gem\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.botreetechnologies.com\/blog\/track-records-changes-with-papertrail-gem\/#primaryimage\",\"url\":\"https:\/\/www.botreetechnologies.com\/blog\/wp-content\/uploads\/2021\/01\/track-records-with-papertrail-gem.png\",\"contentUrl\":\"https:\/\/www.botreetechnologies.com\/blog\/wp-content\/uploads\/2021\/01\/track-records-with-papertrail-gem.png\",\"width\":850,\"height\":479,\"caption\":\"PaperTrail gem\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.botreetechnologies.com\/blog\/track-records-changes-with-papertrail-gem\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.botreetechnologies.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Track Records Changes with PaperTrail gem\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.botreetechnologies.com\/blog\/#website\",\"url\":\"https:\/\/www.botreetechnologies.com\/blog\/\",\"name\":\"BoTree Technologies\",\"description\":\"Committed to inspire generation.\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.botreetechnologies.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.botreetechnologies.com\/blog\/#\/schema\/person\/72dcc8466ce1aa6c11111731ce677597\",\"name\":\"Dharmik Salakiya\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.botreetechnologies.com\/blog\/wp-content\/uploads\/2020\/10\/dharmik-salakiya-150x150.png\",\"url\":\"https:\/\/www.botreetechnologies.com\/blog\/wp-content\/uploads\/2020\/10\/dharmik-salakiya-150x150.png\",\"contentUrl\":\"https:\/\/www.botreetechnologies.com\/blog\/wp-content\/uploads\/2020\/10\/dharmik-salakiya-150x150.png\",\"caption\":\"Dharmik Salakiya\"},\"description\":\"I am a Ruby on Rails Developer. I like ruby, and problem solving and explore new things. Apart from that, I like travelling and listen to songs.\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Track Records Changes with PaperTrail gem","description":"Want to track record changes in Ruby on Rails? You can easily use the PaperTrail Gem and track them without any hassle. Checkout guide on papertrail gem.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.botreetechnologies.com\/blog\/track-records-changes-with-papertrail-gem\/","og_locale":"en_US","og_type":"article","og_title":"Track Records Changes with PaperTrail gem","og_description":"Want to track record changes in Ruby on Rails? You can easily use the PaperTrail Gem and track them without any hassle. Checkout guide on papertrail gem.","og_url":"https:\/\/www.botreetechnologies.com\/blog\/track-records-changes-with-papertrail-gem\/","og_site_name":"BoTree Technologies","article_publisher":"https:\/\/www.facebook.com\/BoTreeTechnologies\/","article_published_time":"2021-01-01T10:59:19+00:00","article_modified_time":"2021-01-04T06:06:20+00:00","og_image":[{"width":850,"height":479,"url":"https:\/\/www.botreetechnologies.com\/blog\/wp-content\/uploads\/2021\/01\/track-records-with-papertrail-gem.png","type":"image\/png"}],"author":"Dharmik Salakiya","twitter_card":"summary_large_image","twitter_creator":"@BoTreeTech","twitter_site":"@BoTreeTech","twitter_misc":{"Written by":"Dharmik Salakiya","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.botreetechnologies.com\/blog\/track-records-changes-with-papertrail-gem\/#article","isPartOf":{"@id":"https:\/\/www.botreetechnologies.com\/blog\/track-records-changes-with-papertrail-gem\/"},"author":{"name":"Dharmik Salakiya","@id":"https:\/\/www.botreetechnologies.com\/blog\/#\/schema\/person\/72dcc8466ce1aa6c11111731ce677597"},"headline":"Track Records Changes with PaperTrail gem","datePublished":"2021-01-01T10:59:19+00:00","dateModified":"2021-01-04T06:06:20+00:00","mainEntityOfPage":{"@id":"https:\/\/www.botreetechnologies.com\/blog\/track-records-changes-with-papertrail-gem\/"},"wordCount":738,"image":{"@id":"https:\/\/www.botreetechnologies.com\/blog\/track-records-changes-with-papertrail-gem\/#primaryimage"},"thumbnailUrl":"https:\/\/www.botreetechnologies.com\/blog\/wp-content\/uploads\/2021\/01\/track-records-with-papertrail-gem.png","articleSection":["Ruby on Rails","Technology"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.botreetechnologies.com\/blog\/track-records-changes-with-papertrail-gem\/","url":"https:\/\/www.botreetechnologies.com\/blog\/track-records-changes-with-papertrail-gem\/","name":"Track Records Changes with PaperTrail gem","isPartOf":{"@id":"https:\/\/www.botreetechnologies.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.botreetechnologies.com\/blog\/track-records-changes-with-papertrail-gem\/#primaryimage"},"image":{"@id":"https:\/\/www.botreetechnologies.com\/blog\/track-records-changes-with-papertrail-gem\/#primaryimage"},"thumbnailUrl":"https:\/\/www.botreetechnologies.com\/blog\/wp-content\/uploads\/2021\/01\/track-records-with-papertrail-gem.png","datePublished":"2021-01-01T10:59:19+00:00","dateModified":"2021-01-04T06:06:20+00:00","author":{"@id":"https:\/\/www.botreetechnologies.com\/blog\/#\/schema\/person\/72dcc8466ce1aa6c11111731ce677597"},"description":"Want to track record changes in Ruby on Rails? You can easily use the PaperTrail Gem and track them without any hassle. Checkout guide on papertrail gem.","breadcrumb":{"@id":"https:\/\/www.botreetechnologies.com\/blog\/track-records-changes-with-papertrail-gem\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.botreetechnologies.com\/blog\/track-records-changes-with-papertrail-gem\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.botreetechnologies.com\/blog\/track-records-changes-with-papertrail-gem\/#primaryimage","url":"https:\/\/www.botreetechnologies.com\/blog\/wp-content\/uploads\/2021\/01\/track-records-with-papertrail-gem.png","contentUrl":"https:\/\/www.botreetechnologies.com\/blog\/wp-content\/uploads\/2021\/01\/track-records-with-papertrail-gem.png","width":850,"height":479,"caption":"PaperTrail gem"},{"@type":"BreadcrumbList","@id":"https:\/\/www.botreetechnologies.com\/blog\/track-records-changes-with-papertrail-gem\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.botreetechnologies.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Track Records Changes with PaperTrail gem"}]},{"@type":"WebSite","@id":"https:\/\/www.botreetechnologies.com\/blog\/#website","url":"https:\/\/www.botreetechnologies.com\/blog\/","name":"BoTree Technologies","description":"Committed to inspire generation.","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.botreetechnologies.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.botreetechnologies.com\/blog\/#\/schema\/person\/72dcc8466ce1aa6c11111731ce677597","name":"Dharmik Salakiya","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.botreetechnologies.com\/blog\/wp-content\/uploads\/2020\/10\/dharmik-salakiya-150x150.png","url":"https:\/\/www.botreetechnologies.com\/blog\/wp-content\/uploads\/2020\/10\/dharmik-salakiya-150x150.png","contentUrl":"https:\/\/www.botreetechnologies.com\/blog\/wp-content\/uploads\/2020\/10\/dharmik-salakiya-150x150.png","caption":"Dharmik Salakiya"},"description":"I am a Ruby on Rails Developer. I like ruby, and problem solving and explore new things. Apart from that, I like travelling and listen to songs."}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.botreetechnologies.com\/blog\/wp-json\/wp\/v2\/posts\/14793","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.botreetechnologies.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.botreetechnologies.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.botreetechnologies.com\/blog\/wp-json\/wp\/v2\/users\/64"}],"replies":[{"embeddable":true,"href":"https:\/\/www.botreetechnologies.com\/blog\/wp-json\/wp\/v2\/comments?post=14793"}],"version-history":[{"count":5,"href":"https:\/\/www.botreetechnologies.com\/blog\/wp-json\/wp\/v2\/posts\/14793\/revisions"}],"predecessor-version":[{"id":14800,"href":"https:\/\/www.botreetechnologies.com\/blog\/wp-json\/wp\/v2\/posts\/14793\/revisions\/14800"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.botreetechnologies.com\/blog\/wp-json\/wp\/v2\/media\/14798"}],"wp:attachment":[{"href":"https:\/\/www.botreetechnologies.com\/blog\/wp-json\/wp\/v2\/media?parent=14793"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.botreetechnologies.com\/blog\/wp-json\/wp\/v2\/categories?post=14793"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.botreetechnologies.com\/blog\/wp-json\/wp\/v2\/tags?post=14793"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}