* Page unique_cross_model_slug seems misconfigured * Update validator test * More verbose invalid attribute message * Try dynamic model/attribute registration * Rubocop * Use the cross-model-slug existence check * Register with the dynamic cross-model-slug checker * Cleanup * Add missing keys to fr * Update format regex * Adjust validation: always presence, unique if changed * Tests can create reserved-word pages when they need to * Slugs can be mixed case? * Case-sensitive is better, actually * Refactor to use CrossModel check * Refactor, rename for clarity * Refactor, avoid mocking oneself * Refactor, injectable everything * Add reservedword check to extracted exists? checker * Move to concerns * Without dynamic registration * extend when needed * Cleanup comments, remove registration references --------- Co-authored-by: Goran <gorang.pub@gmail.com>
8 lines
335 B
Ruby
8 lines
335 B
Ruby
# extend to add :unique_across_models, which validates a slug or name across
|
|
# all "slug-like" models via CrossModelSlug
|
|
module UniqueAcrossModels
|
|
def unique_across_models(attribute, **options)
|
|
validates attribute, presence: true
|
|
validates attribute, cross_model_slug: true, **options, if: :"#{attribute}_changed?"
|
|
end
|
|
end
|