种子阵列上的未定义方法错误

时间:2015-06-30 07:44:45

标签: ruby-on-rails ruby ruby-on-rails-4 seeding rolify

我正在实施名为Rolify的宝石。我已经成功创建了一个控制器和模型方法来为用户分配一个主持人角色。但是,我在播种和测试方面遇到了麻烦。为了测试,我发布了seperate question

播种的想法是首先在Role表中创建角色。然后为30个随机组织和每个组织2个随机用户,并为这2个用户分配该组织的主持人角色。在我的种子文件的末尾,我添加了:

moderator = Role.create!(:moderator => "moderator") 

organizations = Organization.take(30)
organizations.each do |org|
  2.times do |n|
    user = User.where(usertype: 1).take(1)
    user.add_role :moderator, org
  end
end

我在角色表中创建角色的种子错误:

ActiveRecord::UnknownAttributeError: unknown attribute 'moderator' for Role.

我对第二部分播种的错误:

NoMethodError: undefined method 'add_role' for #<Array:0x0000000581f268>

Add_role是rolify中的一种方法,也用于我的控制器方法, 的工作方式。

知道造成播种问题的原因是什么?

1 个答案:

答案 0 :(得分:1)

确保将moderator作为数据库roles表格中的一列。

对于第二个错误,请输入:

user = User.where(usertype: 1).take(1)

正在创建用户的数组对象,而不是用户。尝试将其更改为:

user = User.where(usertype: 1).first