I have an active record callback on my user model to generate a username if the user didn't specify a username. This would occur when the user would register via Google, Facebook, or any other third party.
class User < ActiveRecord::Base
extend FriendlyId
friendly_id :username, use: :slugged
before_validation :set_default_username
private
def set_default_username
self.username ||= "user#{User.last.id+1}"
end
end
The problem is, in my seeds file, i noticed for one of my users, the slug was not being created, specifically on this case:
User.create(email:"[email protected]", password: "password")
While the username is being created due to set_default_username, the slug is not being created. Is there any way to fix this?
Perhaps it's a friendly_id issue:
Class User < ActiveRecord::Base
extend FriendlyId
friendly_id :username, use: :slugged
before_save :set_default_username
private
def set_default_username
self.username ||= "user#{User.maximum(:id).next}"
end
def should_generate_new_friendly_id?
slug.blank? || username_changed?
end
end
A resource for you: Ruby on Rails: How to get ActiveRecord to show the next id (last + 1)?
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With