Я пытаюсь добавить слагов для своих пользователей и не могу использовать гем friendly_id из-за того, как он влияет на пользователей, которых вводят из CMS, и сталкивается с проблемами при применении слагов.
Так и у моего пользователяУ меня есть следующая таблица:
create_table "users", id: :serial, force: :cascade do |t|
t.string "first_name"
t.string "last_name"
t.text "bio"
t.string "title"
t.string "avatar_file_name"
t.string "avatar_content_type"
t.integer "avatar_file_size"
t.datetime "avatar_updated_at"
t.string "slug"
end
В модели приложения
def to_slug(string)
string.parameterize.truncate(80, omission: '')
end
В модели пользователя
def set_url_name
self.full_name = [first_name, last_name].join('-')
end
def self.add_slugs
update(url_name: to_slug(set_url_name))
end
def to_param
slug
end
Моя мысль была с тех пор, как first_name и last_nameотдельные поля, я должен объединить их с тире для установки url_name.Поэтому, когда я попадаю в консоль rails, я пытаюсь применить это к существующим данным, выполняя:
User.add_slugs
В итоге получаю
NameError: undefined local variable or method `set_url_name''
Did you mean? sti_name
from /Users/username/.rvm/gems/ruby-2.4.1/gems/activerecord-5.1.4/lib/active_record/dynamic_matchers.rb:22:in `method_missing'
Первое, что я хочу сказать, - это мой метод set_url_name isn 'т т правильно, поэтому я попытался:
def self.add_slugs
update(slug: to_slug(name))
end
В результате:
NoMethodError: undefined method `to_slug' for #<Class:0x007fc624e376e0>
Did you mean? to_s
Я также изменил имя с: first_name, first_name,: last_name и last_name.Все с тем же вопросом.Любое руководство?