Попробуйте:
class User
def has_permission?(permission, object)
RoleUser.joins(:permission_roles).where(
:roles_users => {
:user_id => id
},
:permission_roles => {
:permission_id => permission,
:object_type => object.class.base_class.name,
:object_id => object
}
).exists?
end
end
Теперь вы можете проверить разрешение следующим образом:
current_user.has_permission?(@edit_permission, @blog_post)