@classmethod
def create(cls, action, **kwargs):
    """Create new database row using the provided action need.

        :param action: An object containing a method equal to ``'action'`` and
            a value.
        :param argument: The action argument. If this parameter is not passed,
            then the ``action.argument`` will be used instead. If the
            ``action.argument`` does not exist, ``None`` will be set as
            argument for the new action need.
        :returns: An :class:`invenio_access.models.ActionNeedMixin` instance.
        """
    assert action.method == 'action'
    argument = kwargs.pop('argument', None) or getattr(action, 'argument', None
        )
    return cls(action=action.value, argument=argument, **kwargs)
