2016-10-14 12:47:24 -05:00
|
|
|
class Tag < ApplicationRecord
|
2016-10-20 15:48:33 -05:00
|
|
|
include TokenizedLike
|
|
|
|
|
2017-03-29 16:52:59 -05:00
|
|
|
has_and_belongs_to_many :recipes
|
|
|
|
|
2016-10-20 15:48:33 -05:00
|
|
|
scope :by_name, ->(names) { where(lowercase_name: Array.wrap(names).map { |n| n.downcase }) }
|
2016-10-14 12:47:24 -05:00
|
|
|
|
|
|
|
validates :name, presence: true, length: {maximum: 250}, uniqueness: { case_sensitive: false }
|
|
|
|
|
2016-10-20 15:48:33 -05:00
|
|
|
before_save :set_lowercase_name
|
|
|
|
|
|
|
|
def is?(tag_name)
|
|
|
|
tag_name.casecmp(self.name) == 0
|
|
|
|
end
|
|
|
|
|
|
|
|
def self.search(query)
|
|
|
|
token = query.to_s.strip
|
|
|
|
|
|
|
|
if token.empty?
|
|
|
|
Tag.none
|
|
|
|
else
|
|
|
|
Tag.matches_token(:name, token)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
private
|
|
|
|
|
|
|
|
def set_lowercase_name
|
|
|
|
self.lowercase_name = self.name.downcase
|
|
|
|
end
|
|
|
|
|
2016-10-14 12:47:24 -05:00
|
|
|
end
|