Как можно форматировать теги с помощью act-as-taggable-on перед сохранением модели?Как я могу форматировать теги с помощью атрибутов act-as-taggable-on перед сохранением моей модели пользователя?
Я использую следующий камень в моем рубин на рельсы проекта
gem 'acts-as-taggable-on', '~> 2.3.1'
Я добавил интересы тегов к модели пользователя.
user.rb
class User < ActiveRecord::Base
acts_as_ordered_taggable_on :interests
scope :by_join_date, order("created_at DESC")
rolify
# Include default devise modules. Others available are:
# :token_authenticatable, :confirmable,
# :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
# Setup accessible (or protected) attributes for your model
attr_accessible :name, :email, :password, :password_confirmation, :remember_me, :interest_list
# this does not work
before_save :clean_my_tags
# this also does not work
# before_validation :clean_my_tags
def clean_my_tags
if @interest_list
# it appears that at this point, @interest_list is no longer a string, but an
# array of strings corresponding to the tags
@interest_list = @interest_list.map {|x| x.titleize}
end
end
end
Предположим, что последний пользователь уже имеет интерес метки: баскетбол, гольф, футбол Если я изменяю интересы как
u = User.last
u.interest_list = "cats, dogs, rabbits"
u.save
Тогда u.interest_list будет [«кошки», «собаки», «кролики»]
Однако u.interests останется массивом объектов тегов, связанных с баскетболом, гольф, футболом
Как я могу убедиться, что теги отформатированы до сохранения тегов?