неопределенные ошибки метода для before_save в модели поста - PullRequest
0 голосов
/ 08 июня 2018

У меня есть модель поста, в которой я пытаюсь реализовать вызов before_save, чтобы я мог манипулировать вводом из формы перед ее сохранением в базе данных.Все, что я пробую, выдает ошибку, будь то в нижнем регистре, параметризации, gsub или split.Я получаю ошибку undefined method 'downcase' for каждый раз.Просто замените нижний регистр тем, что я пытаюсь сделать.Все, что я хочу сделать, это взять все, что вводит пользователь, и заменить пробелы подчеркиванием.

Вот одна из версий модели Post.

class Post < ApplicationRecord
  belongs_to :user
  has_many :comments, dependent: :destroy
  before_save :permalink_tag
  strip_attributes

  acts_as_taggable

  private
  def permalink_tag 
    self.tag_list = self.tag_list.split(' ').join('_') unless self.tag_list.nil?
  end
end

Теперь вы можете просто заменить код в методе permalink_tag на любую из этих альтернатив, и это все равно приведет к ошибке.

self.tag_list.gsub(/\s+/, "_")
before_save { |post| post.tag_list = post.tag_list.downcase }
self.tag_list.parameterize.underscore

Более подробно ошибка:

NoMethodError in PostsController#update
undefined method `downcase' for ["sample-tag"]:ActsAsTaggableOn::TagList

Трассировка приложения:

app/models/post.rb:4:in `block in <class:Post>'
app/controllers/posts_controller.rb:45:in `block in update'
app/controllers/posts_controller.rb:44:in `update'

1 Ответ

0 голосов
/ 08 июня 2018

Зная, что это была проблема с драгоценным камнем, я смог найти ответ в их документах.

ActsAsTaggableOn.force_lowercase = true
ActsAsTaggableOn.force_parameterize = true
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...