Creating a draft version of an object using Audited Gem











up vote
0
down vote

favorite












Audited is made to work with the current version and previous versions. What I want is to have one more version, a future version, AKA a draft.



Desired Scenario



The current version of an object is used everywhere. However, in the admin screen, you can access and edit a future/draft version of the object. This allows you to make modifications that are not yet visible to others. When the draft is ready, you publish it, making it the current version used everywhere.



I don't see any support for this.




  1. Am I missing something? Is this supported?

  2. Is there some kind of Audited hack that can support this, even in an ugly way?

  3. If no to the above, does this seem like something that could be done reasonably with the Audited gem or am I better off using a different method?










share|improve this question


























    up vote
    0
    down vote

    favorite












    Audited is made to work with the current version and previous versions. What I want is to have one more version, a future version, AKA a draft.



    Desired Scenario



    The current version of an object is used everywhere. However, in the admin screen, you can access and edit a future/draft version of the object. This allows you to make modifications that are not yet visible to others. When the draft is ready, you publish it, making it the current version used everywhere.



    I don't see any support for this.




    1. Am I missing something? Is this supported?

    2. Is there some kind of Audited hack that can support this, even in an ugly way?

    3. If no to the above, does this seem like something that could be done reasonably with the Audited gem or am I better off using a different method?










    share|improve this question
























      up vote
      0
      down vote

      favorite









      up vote
      0
      down vote

      favorite











      Audited is made to work with the current version and previous versions. What I want is to have one more version, a future version, AKA a draft.



      Desired Scenario



      The current version of an object is used everywhere. However, in the admin screen, you can access and edit a future/draft version of the object. This allows you to make modifications that are not yet visible to others. When the draft is ready, you publish it, making it the current version used everywhere.



      I don't see any support for this.




      1. Am I missing something? Is this supported?

      2. Is there some kind of Audited hack that can support this, even in an ugly way?

      3. If no to the above, does this seem like something that could be done reasonably with the Audited gem or am I better off using a different method?










      share|improve this question













      Audited is made to work with the current version and previous versions. What I want is to have one more version, a future version, AKA a draft.



      Desired Scenario



      The current version of an object is used everywhere. However, in the admin screen, you can access and edit a future/draft version of the object. This allows you to make modifications that are not yet visible to others. When the draft is ready, you publish it, making it the current version used everywhere.



      I don't see any support for this.




      1. Am I missing something? Is this supported?

      2. Is there some kind of Audited hack that can support this, even in an ugly way?

      3. If no to the above, does this seem like something that could be done reasonably with the Audited gem or am I better off using a different method?







      ruby activerecord acts-as-audited






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 13 at 22:25









      Kyle Heironimus

      4,63952740




      4,63952740
























          1 Answer
          1






          active

          oldest

          votes

















          up vote
          0
          down vote













          I didn't use the Audited gem to deliver "draft" mode. Instead, I added a boolean named active to the model, and declared



           default_scope { where(active: true) }
          scope :active, -> { where(active: true ) }
          scope :draft, -> { where(active: false) }


          Then, in the controller, a method for administrators to see the draft items:



          def in_draft
          # Admins can see all items in draft status.
          # Sellers can see only their own items in draft status.
          # Buyers can't get here at all because of the authorizations
          if current_tuser.role == "Themadmin"
          @seller_listings = Listing.unscoped.draft
          end
          end


          Last, a method in the controller to publish the item:



          80   def publish
          81 @listing = Listing.unscoped.find(params[:id])
          82 @listing.active = true
          83 respond_to do |format|
          84 if @listing.save!
          85 format.html {redirect_to @listing, notice: 'Listing changed from draft to published.'}
          86 else
          87 format.html {redirect_to @listing, notice: 'Something went wrong'}
          88 end
          89 end
          90 end





          share|improve this answer





















            Your Answer






            StackExchange.ifUsing("editor", function () {
            StackExchange.using("externalEditor", function () {
            StackExchange.using("snippets", function () {
            StackExchange.snippets.init();
            });
            });
            }, "code-snippets");

            StackExchange.ready(function() {
            var channelOptions = {
            tags: "".split(" "),
            id: "1"
            };
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function() {
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled) {
            StackExchange.using("snippets", function() {
            createEditor();
            });
            }
            else {
            createEditor();
            }
            });

            function createEditor() {
            StackExchange.prepareEditor({
            heartbeatType: 'answer',
            convertImagesToLinks: true,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: 10,
            bindNavPrevention: true,
            postfix: "",
            imageUploader: {
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            },
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            });


            }
            });














            draft saved

            draft discarded


















            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53290442%2fcreating-a-draft-version-of-an-object-using-audited-gem%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown

























            1 Answer
            1






            active

            oldest

            votes








            1 Answer
            1






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes








            up vote
            0
            down vote













            I didn't use the Audited gem to deliver "draft" mode. Instead, I added a boolean named active to the model, and declared



             default_scope { where(active: true) }
            scope :active, -> { where(active: true ) }
            scope :draft, -> { where(active: false) }


            Then, in the controller, a method for administrators to see the draft items:



            def in_draft
            # Admins can see all items in draft status.
            # Sellers can see only their own items in draft status.
            # Buyers can't get here at all because of the authorizations
            if current_tuser.role == "Themadmin"
            @seller_listings = Listing.unscoped.draft
            end
            end


            Last, a method in the controller to publish the item:



            80   def publish
            81 @listing = Listing.unscoped.find(params[:id])
            82 @listing.active = true
            83 respond_to do |format|
            84 if @listing.save!
            85 format.html {redirect_to @listing, notice: 'Listing changed from draft to published.'}
            86 else
            87 format.html {redirect_to @listing, notice: 'Something went wrong'}
            88 end
            89 end
            90 end





            share|improve this answer

























              up vote
              0
              down vote













              I didn't use the Audited gem to deliver "draft" mode. Instead, I added a boolean named active to the model, and declared



               default_scope { where(active: true) }
              scope :active, -> { where(active: true ) }
              scope :draft, -> { where(active: false) }


              Then, in the controller, a method for administrators to see the draft items:



              def in_draft
              # Admins can see all items in draft status.
              # Sellers can see only their own items in draft status.
              # Buyers can't get here at all because of the authorizations
              if current_tuser.role == "Themadmin"
              @seller_listings = Listing.unscoped.draft
              end
              end


              Last, a method in the controller to publish the item:



              80   def publish
              81 @listing = Listing.unscoped.find(params[:id])
              82 @listing.active = true
              83 respond_to do |format|
              84 if @listing.save!
              85 format.html {redirect_to @listing, notice: 'Listing changed from draft to published.'}
              86 else
              87 format.html {redirect_to @listing, notice: 'Something went wrong'}
              88 end
              89 end
              90 end





              share|improve this answer























                up vote
                0
                down vote










                up vote
                0
                down vote









                I didn't use the Audited gem to deliver "draft" mode. Instead, I added a boolean named active to the model, and declared



                 default_scope { where(active: true) }
                scope :active, -> { where(active: true ) }
                scope :draft, -> { where(active: false) }


                Then, in the controller, a method for administrators to see the draft items:



                def in_draft
                # Admins can see all items in draft status.
                # Sellers can see only their own items in draft status.
                # Buyers can't get here at all because of the authorizations
                if current_tuser.role == "Themadmin"
                @seller_listings = Listing.unscoped.draft
                end
                end


                Last, a method in the controller to publish the item:



                80   def publish
                81 @listing = Listing.unscoped.find(params[:id])
                82 @listing.active = true
                83 respond_to do |format|
                84 if @listing.save!
                85 format.html {redirect_to @listing, notice: 'Listing changed from draft to published.'}
                86 else
                87 format.html {redirect_to @listing, notice: 'Something went wrong'}
                88 end
                89 end
                90 end





                share|improve this answer












                I didn't use the Audited gem to deliver "draft" mode. Instead, I added a boolean named active to the model, and declared



                 default_scope { where(active: true) }
                scope :active, -> { where(active: true ) }
                scope :draft, -> { where(active: false) }


                Then, in the controller, a method for administrators to see the draft items:



                def in_draft
                # Admins can see all items in draft status.
                # Sellers can see only their own items in draft status.
                # Buyers can't get here at all because of the authorizations
                if current_tuser.role == "Themadmin"
                @seller_listings = Listing.unscoped.draft
                end
                end


                Last, a method in the controller to publish the item:



                80   def publish
                81 @listing = Listing.unscoped.find(params[:id])
                82 @listing.active = true
                83 respond_to do |format|
                84 if @listing.save!
                85 format.html {redirect_to @listing, notice: 'Listing changed from draft to published.'}
                86 else
                87 format.html {redirect_to @listing, notice: 'Something went wrong'}
                88 end
                89 end
                90 end






                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Nov 14 at 5:25









                Norm

                515




                515






























                    draft saved

                    draft discarded




















































                    Thanks for contributing an answer to Stack Overflow!


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid



                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.


                    To learn more, see our tips on writing great answers.





                    Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


                    Please pay close attention to the following guidance:


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid



                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.


                    To learn more, see our tips on writing great answers.




                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function () {
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53290442%2fcreating-a-draft-version-of-an-object-using-audited-gem%23new-answer', 'question_page');
                    }
                    );

                    Post as a guest















                    Required, but never shown





















































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown

































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown







                    Popular posts from this blog

                    How to send String Array data to Server using php in android

                    Title Spacing in Bjornstrup Chapter, Removing Chapter Number From Contents

                    Is anime1.com a legal site for watching anime?