This is the strangest bug I’ve ever encountered
I am using the Best In Place gem in my Rails app in order to allow in-place editing of a page title. The in-place editing works, and the new title gets changed in the database, but when I refresh the page, it reverts back to the old title. I don’t even understand where it’s getting the old title from, since it’s not stored in the database anymore.
When the page is created, it is automatically given the title “Untitled Page”. When I change the title to say, “Title”, and look at the row for the page in the DB with the postgresql admin program, it does indeed change to “Title”. But when I run Page.find(1).title in the rails console, it returns “Untitled Page”
How could this be?!
Fixed it. The reason was that I was using after_initialize to set the automatic properties, which gets called whenever the ActiveRecord object gets initialized. What I really wanted was after_create. I use after_create to call a function called set_properties, where I set things like self.title, and then at the end of the function, I call self.save, which is required for the properties to get saved into the DB.