Фикстуры с полиморфной ассоциацией не работают

Я пытаюсь реализовать драгоценный камень 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

person Nick    schedule 29.06.2015    source источник


Ответы (1)


Я обнаружил, что с кодом в обновлении тест проходит, если я запускаю его как тест контроллера пользователя или тест интеграции, а не как тест модели. Так что я думаю, что я просто запускал его как неправильный тип теста.

person Nick    schedule 30.06.2015