Coder Social home page Coder Social logo

Comments (4)

venetanji avatar venetanji commented on June 21, 2024

Totally agree! I'm using mongoid. Consider something like:

  before_save :expire_free_trial

  def expire_free_trial
    begin
      trial_expired if Time.now  - created_at > FREE_TRIAL_PERIOD
      self.state = self.current_state
    rescue Transitions::InvalidTransition
    end
  end

It took me quite a while to figure out that line that sets the state attribute. I'd expect that to be set when the non-bang event fires. Perhaps that works only for active record?
Anyways I'm ok with it, but it should be more clear. Specially if you want to call a transition in a before_save...

from transitions.

troessner avatar troessner commented on June 21, 2024

@robolson, @venetanji could you submit a pull request which updates our documentation?
If not, I'll update when I find the time.

from transitions.

zmillman avatar zmillman commented on June 21, 2024

As someone who stumbled on the project and tried to use it with ActiveRecord, this issue caused me a lot of confusion.

I expected the behavior of calling an event like article.publish to update the article.state attribute and was surprised when only current_state changed. Perhaps it would be best to define write_state_without_persistence as @robolson wrote it in the ActiveRecord::Transitions plugin?

from transitions.

troessner avatar troessner commented on June 21, 2024

Closed thanks to @zmillman

from transitions.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.