ruby-on-rails - 如何使用 Factory girl 创建管理员角色?

标签 ruby-on-rails ruby ruby-on-rails-3 rspec factory-bot

好的,所以我想测试需要管理员用户的功能,我正在尝试以管理员身份登录,但为了做到这一点,我需要有一个管理员用户

这是我的代码

  let(:user) { FactoryGirl.create(:user) }
  let(:admin_role) { FactoryGirl.create(:role) }

FactoryGirl.define do
  factory :user do
    first_name "John"
    last_name  "Doe"
    email  "john@doe.com"
  end

  factory :role do
    name "Admin"
  end
end

我如何连接它们我试过user.roles << user_role但是得到了这个错误

/Users/matt/Sites/application/spec/controllers/directory_controller_spec.rb:16:in `block (3 levels) in <top (required)>': undefined local variable or method `user' for #<Class:0x007fa550890d80> (NameError)

这是我的模型

class User < ActiveRecord::Base
    has_many :roles, :through => :role_users
    has_many :role_users
    ...

class Role < ActiveRecord::Base
    has_many :users, :through => :role_users
    has_many :role_users
    ...

class RoleUser < ActiveRecord::Base
    belongs_to :role
    belongs_to :user
end

最佳答案

spec/factories/user.rb

FactoryGirl.define do
  factory :user do
    first_name "John"
    last_name  "Doe"
    email "john@doe.com"
  end

  factory :admin_user, :parent => :user do
    roles { [ FactoryGirl.create(:admin_role) ] }
  end

  factory :role do
    name { "Role_#{rand(9999)}" }
  end

  factory :admin_role, :parent => :role do
    name "Admin"
  end
end

关于ruby-on-rails - 如何使用 Factory girl 创建管理员角色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10131694/

相关文章:

ruby - 如何在 Ruby 中将字符串保存到 CSV 文件?

ruby-on-rails - 将 Rails 应用程序调用的方法跟踪到图形中

ruby-on-rails - Rails 3 中的字符串连接

ruby-on-rails - Rails + Capybara + poltergeist ArgumentError : rack-test requires a rack application,,但是没有给出

ruby-on-rails - Ruby 和编码转换

ruby-on-rails - 在 Ruby 1.9 中使用 instance_eval 进行常量查找

ruby-on-rails - 在多服务器环境中,如果站点不活动时间超过 1500 万,服务器将失去与 PostgreSQL 数据库的连接

ruby-on-rails - ActiveRecord::Enum - PG::InvalidTextRepresentation:错误:整数输入语法无效:

ruby-on-rails - ruby 中两个哈希之间的变化

ruby-on-rails - Rails 方法在 View 中不可用