种子数组上的未定义方法错误

undefined method error on seeding array

我正在实施一个名为 Rolify 的 gem。我已经成功地创建了一个控制器和模型方法来为用户分配主持人角色。但是,我在播种和测试时遇到了问题。为了测试,我发布了 .

播种的想法是首先在角色 table 中创建角色。然后随机选取 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

我在角色 table 中创建角色播种时遇到错误 table:

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

我在第二部分播种时遇到的错误:

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

Add_role 是 rolify 的一种方法,也用在我的控制器方法中,它 确实 起作用。

知道是什么导致了这个播种问题吗?

确保您的数据库 roles table.

中的列之一是 moderator

对于第二个错误,行:

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

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

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