充当可标记对象-枚举方法在标记表中不起作用

时间:2018-11-30 03:24:51

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

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

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

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

Tag.first.private?有效

但是

ActsAsTaggableOn::Tag.first.private?不起作用

抛出此错误: NoMethodError (undefined method 'is_private?' for #<ActsAsTaggableOn::Tag:0x00007fb8414b4028>)

我什至做到了

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

1 个答案:

答案 0 :(得分:1)

使用::ActiveRecord::Base代替ApplicationRecord

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