【发布时间】:2018-09-01 01:26:56
【问题描述】:
我有这个 AuthorizationHelpers,我正在 RSpec 上使用。
module AuthorizationHelpers
def assign_role!(user, role, post)
Role.where(user: user, post: post).delete_all
Role.create!(user: user, role: role, post: post)
end
end
RSpec.configure do |c|
c.include AuthorizationHelpers
end
现在我想在种子上使用这种方法assign_role!。
像这样:
Post.all.each do |post|
[:manager, :editor, :viewer].each do |role|
User.all.where(admin: false).each do |user|
assign_role!(user, role, post)
end
end
end
如果我尝试在 Rails 控制台上使用它,我会收到错误:
NoMethodError: undefined method `assign_role!' for main:Object
有什么方法可以在种子上使用它吗?还是我需要做其他事情?
【问题讨论】:
-
当你调用
assign_role!时,你想象你调用的是什么对象assign_role!on? -
此assign_role 用于为帖子中的用户添加角色。
-
问题不在于目的是什么。问题是你打算调用什么object?通常,当您调用某个东西时,它看起来像
Class.method或Module.method或@object.method。但是,当您调用裸露的assign_role!(未调用Class或Module或@object)时,您认为会发生什么。你认为这是在调用什么对象? (提示:检查您发布的错误。) -
这是给用户的。我想把它放在一个帮手上。
标签: ruby-on-rails ruby-on-rails-4 sqlite rspec-rails seeding