ruby-on-rails – 滚动表错误(user.add_role:admin Unknown Key Error)

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 滚动表错误(user.add_role:admin Unknown Key Error)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试设置rolify gem,并且我遇到一个问题,在控制台中为用户分配一个角色.

这是我的错误

2.2.1 :007 > user.add_role :admin
ArgumentError: Unknown key: :optional.

我正在用cancancan和rolify进行设计.我还运行Koudoku宝石以获得订阅支付支持.我怀疑这个错误可能是由于我的“订阅”表还有一个“user_id”列.有什么可以做的来纠正这个问题吗?

这是我的架构

create_table "subscriptions",force: :cascade do |t|
t.string   "stripe_id"
t.integer  "plan_id"
t.string   "last_four"
t.integer  "coupon_id"
t.string   "card_type"
t.float    "current_price"
t.integer  "user_id"
t.datetime "created_at",null: false
t.datetime "updated_at",null: false
end

create_table "users",force: :cascade do |t|
t.string   "email",default: "",null: false
t.string   "encrypted_password",null: false
t.string   "reset_password_token"
t.datetime "reset_password_sent_at"
t.datetime "remember_created_at"
t.integer  "sign_in_count",default: 0,null: false
t.datetime "current_sign_in_at"
t.datetime "last_sign_in_at"
t.string   "current_sign_in_ip"
t.string   "last_sign_in_ip"
t.datetime "created_at",null: false
t.string   "first_name"
t.string   "string"
t.string   "last_name"
end

 add_index "users",["email"],name: "index_users_on_email",unique: true
 add_index "users",["reset_password_token"],name:    
 "index_users_on_reset_password_token",unique: true

create_table "users_roles",id: false,force: :cascade do |t|
t.integer "user_id"
t.integer "role_id"
end

add_index "users_roles",["user_id","role_id"],name:   "index_users_roles_on_user_id_and_role_id"

end

谢谢.

解决方法

Rolify角色生成器使用以下代码生成角色模型:
class Role < ActiveRecord::Base


has_and_belongs_to_many :users,:join_table => :users_roles

  belongs_to :resource,:polymorphic => true,:optional => true

  validates :resource_type,:inclusion => { :in => Rolify.resource_types },:allow_nil => true

  scopify
end

The:可选=> Rails版本5及更高版本支持true参数.要解决这个问题,只需从您的角色模型中删除该行,您应该很好去.以下是最后的代码供您参考:

class Role < ActiveRecord::Base
  has_and_belongs_to_many :users,:polymorphic => true

  validates :resource_type,:allow_nil => true

  scopify
end

猜你在找的Ruby相关文章