Add ability are allowed using two arguments.

        The first one is the action you're setting the permission for,
        the second one is the class of object you're setting it on.
        the third one is the subject's conditions must be matches or a function
        to be test.

        self.add('update', Article)
        self.add('update', Article, user_id=1)
        self.add('update', Article, user_id=1, title='hello')
        self.add('update', Article, function=test_title)

def add(self, action=None, subject=None, **conditions):
        """
        Add ability are allowed using two arguments.

        The first one is the action you're setting the permission for,
        the second one is the class of object you're setting it on.
        the third one is the subject's conditions must be matches or a function
        to be test.

        self.add('update', Article)
        self.add('update', Article, user_id=1)
        self.add('update', Article, user_id=1, title='hello')
        self.add('update', Article, function=test_title)
        """
        self.add_rule(Rule(True, action, subject, **conditions))