Module: RailsPulse::Taggable
- Extended by:
- ActiveSupport::Concern
- Defined in:
- app/models/concerns/rails_pulse/taggable.rb
Constant Summary collapse
- TAG_NAME_REGEX =
Tag validation constants
/\A[a-z0-9_-]+\z/i- MAX_TAG_LENGTH =
50
Instance Method Summary collapse
- #add_tag(tag) ⇒ Object
- #has_tag?(tag) ⇒ Boolean
- #remove_tag(tag) ⇒ Object
-
#tag_list ⇒ Object
Tag management methods.
- #tag_list=(value) ⇒ Object
Instance Method Details
#add_tag(tag) ⇒ Object
39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'app/models/concerns/rails_pulse/taggable.rb', line 39 def add_tag(tag) # Validate tag format and length return false unless valid_tag_name?(tag) = tag_list unless .include?(tag.to_s) << tag.to_s self.tag_list = save else true # Tag already exists, return success end end |
#has_tag?(tag) ⇒ Boolean
35 36 37 |
# File 'app/models/concerns/rails_pulse/taggable.rb', line 35 def has_tag?(tag) tag_list.include?(tag.to_s) end |
#remove_tag(tag) ⇒ Object
53 54 55 56 57 58 59 60 |
# File 'app/models/concerns/rails_pulse/taggable.rb', line 53 def remove_tag(tag) = tag_list if .include?(tag.to_s) .delete(tag.to_s) self.tag_list = save end end |
#tag_list ⇒ Object
Tag management methods
27 28 29 |
# File 'app/models/concerns/rails_pulse/taggable.rb', line 27 def tag_list || [] end |
#tag_list=(value) ⇒ Object
31 32 33 |
# File 'app/models/concerns/rails_pulse/taggable.rb', line 31 def tag_list=(value) self. = value.to_json end |