Полагаю, вы могли бы использовать CanCan, но, на мой взгляд, использование простых условных операторов было бы намного проще.
Я бы сделал что-то вроде:
def write_to_feed(user, action)
unless user.private?
unless user.private_action? action
# Write to feed
end
end
end
write_to_feed @user, :post
write_to_feed @user, :comment