В итоге я последовал совету нейтрино и немного больше посмотрел на код рельсов.В итоге я вытащил пару приватных методов в классе InstanceTag
и немного их передвинул.Я установил это на ActiveRecord::Base
, что может быть не лучшим решением, но оно работает прямо сейчас:
def create_tag_id(method_name)
object_name = ActionController::RecordIdentifier.singular_class_name(self)
"#{sanitized_object_name(object_name)}_#{sanitized_method_name(method_name.to_s)}"
end
private
def sanitized_object_name(object_name)
object_name.gsub(/\]\[|[^-a-zA-Z0-9:.]/, "_").sub(/_$/, "")
end
def sanitized_method_name(method_name)
method_name.sub(/\?$/,"")
end