`#all?` takes a block, so this can be simply:

```
def active_in_groups?(groups, user)
  groups.to_s.split('&').all? do |group|
    evaluate_group(group, user)
  end
end
```

Also, as in my note above, I'd change `groups` to `group_expression` or similar. That makes it clear that it's a string (or a symbol) and not a collection.