Permalink.create(url: /my/path, post_id: 123) no longer works

This commit UX: redesign admin permalinks page (#29634) · discourse/discourse@42b1ca8 · GitHub

seems to have broken the expected behavior of Permalink.create. Rather than being able to call it with a post_id or topic_id as it once worked (and is what a Ruby programmer would expect?), you now need to call it like this:

          Permalink.create!(url: "/my/path/#{import_id}.html", permalink_type_value: pcf.post_id, permalink_type: "post") 

This breaks all of the import scripts that create permalinks ( ./vanilla_mysql.rb ./zendesk.rb ./muut.rb ./vbulletin3.rb ./jforum.rb ./ipboard.rb ./bbpress.rb ./answerhub.rb ./vbulletin.rb ./mylittleforum.rb ./nodebb/nodebb.rb./telligent.rb ./mybb.rb ./question2answer.rb./smf2.rb ./vbulletin5.rb ./phpbb3/importers/permalink_importer.rb ./phorum.rb./answerbase.rb./drupal.rb./zendesk_api.rb)
And calls like find_or_create_by also don’t work anymore (breaking vbulletin3, smf1, xenforo, and getsatisfaction).

Is this expected?

It seems that the tests were also changed to support this new behavior, so maybe so?

5 Likes

I created a PR with a possible solution:

6 Likes