Я пытаюсь реализовать драгоценный камень Rolify, но у меня возникают проблемы с добавлением фикстур с областью действия для него. Последняя строка приведенного ниже (модельного) теста не проходит, потому что в настоящее время роль модератора, по-видимому, отдана @user
глобально, а не только одной организации. Приведенные ниже приборы не используют resource_id
и resource_type
, которые упоминаются в gem. документации для фикстур, но я не знаю, как их использовать. Как установить область действия роли модератора только для организации?
роли.yml
moderator:
id: 1
resource: one (Organization)
пользователи.yml
one:
email: [email protected]
roles: moderator, organizations(:one) # I was hoping this would set the scope of the role to organization one but it isn't (seems to set the role globally).
test.rb
def setup
@moderator_role = roles(:moderator)
@organization1 = organizations(:one)
@organization2 = organizations(:two)
@user = users(:one)
end
test "should be moderator if fixtures correct" do
assert_equal @user.has_role?('moderator'), true
assert_equal @user.has_role?(:moderator, @organization1), true
assert_equal @user.has_role?(:moderator, @organization2), false # This line fails
end
Обновление: я также попробовал приведенный ниже код. Но все равно тест не проходит.
роли.yml
moderator:
name: :moderator
resource: one (Organization)
пользователи.yml
one:
organization: one
roles: moderator, organizations(:one)
организации.yml
one:
name: "Company A"
test.rb
def setup
@moderator_role = roles(:moderator)
@organization1 = organizations(:one)
@organization2 = organizations(:two)
@user = users(:one)
end
test "should be moderator if fixtures correct" do
assert_equal @user.has_role?('moderator'), true # This line fails
assert_equal @user.has_role?(:moderator, @organization1), true # This line also fails
assert_equal @user.has_role?(:moderator, @organization2), false
end