Ruby on rails ActiveRecord::RecordInvalid:验证失败:lis中不包括资源类型
我是rails新手。我正在使用RolifyGem添加用户角色。 我在尝试从rails控制台添加角色时遇到了这个问题。有没有人面临过这个问题Ruby on rails ActiveRecord::RecordInvalid:验证失败:lis中不包括资源类型,ruby-on-rails,ruby,activerecord,rolify,Ruby On Rails,Ruby,Activerecord,Rolify,我是rails新手。我正在使用RolifyGem添加用户角色。 我在尝试从rails控制台添加角色时遇到了这个问题。有没有人面临过这个问题 u = User.first u.add_role(:admin).save! 错误列表=== ActiveRecord::RecordInvalid: Validation failed: Resource type is not included in the list. Rolify迁移文件============ class RolifyCrea
u = User.first
u.add_role(:admin).save!
错误列表===
ActiveRecord::RecordInvalid: Validation failed: Resource type is not included in the list.
Rolify迁移文件============
class RolifyCreateRoles < ActiveRecord::Migration
def change
create_table(:roles) do |t|
t.string :name
t.references :resource, :polymorphic => true
t.timestamps
end
create_table(:users_roles, :id => false) do |t|
t.references :user
t.references :role
end
add_index(:roles, :name)
add_index(:roles, [ :name, :resource_type, :resource_id ])
add_index(:users_roles, [ :user_id, :role_id ])
end
end`
class-RolifyCreateRolestrue
t、 时间戳
结束
创建表(:users\u roles,:id=>false)do | t|
t、 参考资料:用户
t、 参考:角色
结束
添加索引(:角色,:名称)
添加索引(:角色,[:名称,:资源类型,:资源id])
添加索引(:users\u roles,[:user\u id,:role\u id])
结束
结束`
我已经遵循了从这里安装rolify的文档==
版本>=3.5存在这些问题,暂时使用rolify 3.4版。我将修复并发送然后拉取请求。在3.5版中,似乎不可能像以前的版本那样创建全局角色。 实际上,无论何时创建角色,它都需要资源类型,因为当前您创建的是没有任何资源的全局角色,所以它的抛出错误。 但若您在实例上创建角色,它将起作用。 假设你有一个叫“PAST”的模型为
Class Post
resourcify
end
On Rails console, create
user = User.first
user.add_role(:admin, Post.first)
正如我在上面给出的场景,当我创建角色时,它将获得“Post”类型的资源。但在您的情况下,角色不获取资源类型。因此,如果您想创建全局角色,最好从您的“角色”模型中删除“validates:resource_type,:inclusion=>{:in=>Rolify.resource_types}”,请更改角色模型,如下所示:
class Role < ActiveRecord::Base
has_and_belongs_to_many :users, :join_table => :users_roles belongs_to :resource, :polymorphic => true
scopify
end
类角色:users_roles behing_to:resource,:多态=>true
嘲笑
结束
您需要允许您的角色
模型上的资源类型
为nil
对于Rails 4,在我们的角色
模型中有以下内容:
belongs_to :resource, :polymorphic => true
validates :resource_type,
:inclusion => { :in => Rolify.resource_types },
:allow_nil => true
从Rails 5开始,属于默认情况下所需的
关联,其中可选:true
进入:
belongs_to :resource, :polymorphic => true, optional:true
validates :resource_type,
:inclusion => { :in => Rolify.resource_types },
:allow_nil => true
有没有在启动rails控制台后运行过rakedb:migration?谢谢。但我还没看过你的模型呢?类用户