【问题标题】:Acts as taggable on - enum methods not working in tags table充当可标记的对象 - 枚举方法在标记表中不起作用
【发布时间】:2018-11-30 03:24:50
【问题描述】:

我正在使用acts-as-taggable-on gem。它会自动创建tags 和taggings 表。但我想在tags 表中添加一个名为status 的附加列。我生成了一个迁移以添加status 列。

然后我在app/models下创建了一个名为tag.rb的文件

class Tag < ApplicationRecord
  enum status: { public: 0, private: 1 }
end

Tag.first.private? 有效

但是

ActsAsTaggableOn::Tag.first.private? 不工作

抛出此错误: NoMethodError (undefined method 'is_private?' for #&lt;ActsAsTaggableOn::Tag:0x00007fb8414b4028&gt;)

我什至做到了

module ActsAsTaggableOn
  class Tag < ApplicationRecord
    enum status: { public: 0, private: 1 }
  end
end

不知何故,这也不起作用。谁能指出问题所在。

编辑: 这是迁移文件

class AddStatusToTags < ActiveRecord::Migration[5.2]
  def change
    add_column :tags, :status, :integer, default: 0, null: false
  end
end

【问题讨论】:

  • 您的迁移(将status 添加到tags 的位置)是什么样的?我推测您将该列添加到了错误的表中。
  • 你能用::ActiveRecord::Base代替ApplicationRecord 吗?
  • @jvillian 我编辑了问题以添加迁移文件。
  • @emaillenin,谢谢它的工作。

标签: ruby-on-rails enums ruby-on-rails-5 acts-as-taggable-on


【解决方案1】:

使用::ActiveRecord::Base 而不是ApplicationRecord

module ActsAsTaggableOn
  class Tag < ::ActiveRecord::Base
    enum status: { public: 0, private: 1 }
  end
end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多