post模型中before_save的未定义方法错误

时间:2018-06-08 19:43:27

标签: ruby-on-rails

我有一个帖子模型,我正在尝试实现一个before_save调用,所以我可以在将表单保存到数据库之前对其进行操作。我尝试的任何东西都会抛出错误,无论是downcase,参数化,gsub还是split。我每次都会收到undefined method 'downcase' for错误。只需用我正在尝试的任何东西替换downcase。我想做的就是接受用户输入的任何内容并用下划线替换空格。

这是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 :(得分:0)

知道这是宝石的一个问题,我能够在他们的文档中找到答案。

str