Skip to content

Commit 1cf3cae

Browse files
author
Alex Tharp
authored
Merge pull request #26 from cortex-cms/COR-537/Validate-Slug-Uniqueness
COR-537: JSONB Accessor + Uniqueness Validation
2 parents 0f2d202 + a3e59b2 commit 1cf3cae

File tree

3 files changed

+15
-1
lines changed

3 files changed

+15
-1
lines changed

app/models/text_field_type.rb

+13-1
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
class TextFieldType < FieldType
22
attr_accessor :text
3+
jsonb_accessor :data, text: :string
34

45
validates :text, presence: true, if: :validate_presence?
56
validate :text_length, if: :validate_length?
7+
validate :text_unique, if: :validate_uniqueness?
68

79
def data=(data_hash)
810
@text = data_hash.deep_symbolize_keys[:text]
@@ -25,14 +27,24 @@ def mapping_field_name
2527
end
2628

2729
def text_present
28-
errors.add(:text, "must be present") if @text.empty?
30+
errors.add(:text, 'must be present') if @text.empty?
2931
end
3032

3133
def text_length
3234
validator = LengthValidator.new(validations[:length].merge(attributes: [:text]))
3335
validator.validate_each(self, :text, text)
3436
end
3537

38+
def text_unique
39+
unless Field.find_by_name(field_info.name).field_items.jsonb_contains(:data, text: text).empty?
40+
errors.add(:text, "#{field_info.name} Must be unique")
41+
end
42+
end
43+
44+
def validate_uniqueness?
45+
@validations.key? :uniqueness
46+
end
47+
3648
def validate_presence?
3749
@validations.key? :presence
3850
end

cortex-plugins-core.gemspec

+1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ Gem::Specification.new do |s|
2222
s.add_dependency "cells-haml", "~> 0.0.10"
2323
s.add_dependency "mimemagic", "~> 0.3.2"
2424
s.add_dependency "ckeditor", "= 4.2.0"
25+
s.add_dependency "jsonb_accessor", "~> 1.0.0.beta.2"
2526

2627
s.add_development_dependency "sqlite3"
2728
end

lib/cortex/plugins/core/engine.rb

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
require 'ckeditor'
2+
require 'jsonb_accessor'
23

34
module Cortex
45
module Plugins

0 commit comments

Comments
 (0)