I think they should accept the same number of parameters, other than the value (which is usually passed in first). You can't supply that on a virtual column, because there is no value. So in this case, I think the 4 values should be passed across: the record, the key, the model, a callback.

Sound okay?