【问题标题】:Rolify fixtures setup for rails app用于 Rails 应用程序的 Rolify 固定装置设置
【发布时间】:2014-08-11 21:36:42
【问题描述】:

有一个应用程序,我使用 Rolify 和 Pundit 进行授权,使用 Minitest/fixtures 进行测试。

当我使用固定装置将用户设置为管理员时,我没有得到断言的真实值。

/fixtures/users.yml
  administrator:
    email: admin@example.com
    roles: admin

/fixtures/roles.yml
  admin:
    id: 1
    name: admin

test.rb
  it "is administrator" do 
    User.first.has_role?('admin').must_equal true
  end

测试返回错误,我用符号尝试了管理员,但仍然得到相同的结果。

当该开发环境中的用户具有管理员时,当我询问角色是否为管理员时,我得到了正确的答案。

测试框架是minitest,我的用户模型是rolified

【问题讨论】:

  • 您是否检查了使用has_role? 方法时触发的查询?
  • SELECT COUNT(*) FROM "roles" INNER JOIN "users_roles" ON "roles"."id" = "users_roles"."role_id" WHERE "users_roles"."user_id" = ? AND (((roles.name = 'admin') AND (roles.resource_type IS NULL) AND (roles.resource_id IS NULL))) [["user_id", 1]]

标签: ruby-on-rails minitest rolify


【解决方案1】:

好的,所以问题与正确设置 roles.yml 有关。我在上面使用 id: 如果你只使用 users: 它可以工作

/fixtures/users.yml
  administrator:
    email: admin@example.com
    roles: admin

/fixtures/roles.yml
  admin:
    users: administrator
    name: admin

test.rb
  it "is administrator" do 
    User.first.has_role?('admin').must_equal true
  end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-18
    • 2011-02-23
    • 1970-01-01
    • 2010-10-05
    • 1970-01-01
    相关资源
    最近更新 更多