FriendyId author here.
FriendlyId internally uses the private set_slug
to do this. This method is invoked via a before_validation
callback. If for some reason you do not wish to call valid?
, you can invoke the set_slug
method via send
, or define a method in your model which invokes it:
instance = ModelClass.new
instance.send(:set_slug)
# or
class ModelClass < ActiveRecord::Base
friendly_id :name, use: :slugged
def generate_slug_preview
set_slug
end
end
However, note that bypassing or ignoring validations is often a bad idea. For example, if your model included a validation on the name
field, and then you used that field as the basis of the slug, then you are previewing a slug that will never actually be generated.