Ответ 1
factory_girl transient 'attributes' не являются атрибутами вообще; они являются просто параметрами вызова метода factory, который может использоваться вашим кодом внутри factory. Итак, в вашем примере нет, upcased
не является атрибутом модели.
В столбце transient
перечислены атрибуты атрибута (то есть ключи в хеше, переданные методу factory), которые не являются атрибутами. factory_girl игнорирует их при настройке атрибутов только что созданного экземпляра модели, если вы не написали код в определении factory, чтобы сообщить factory_girl что-то с ними делать.
evaluator
- это объект, переданный обратным вызовам factory_girl. Это всегда второй параметр блока; объект модели всегда является первым параметром. Это концептуально похоже на Ruby binding
. Вы можете задать ему значение любого ключа в хеше аргумента, независимо от того, является ли он фактическим атрибутом или переходным атрибутом.
Признаки и переходные атрибуты не влияют друг на друга по отношению к аргументам методов factory, так как признаки являются скалярными, а переходные атрибуты являются частью хеша аргумента. Любое количество реальных атрибутов и переходных "атрибутов" может быть в хеше аргумента.
Здесь документация factory_girl для записи: https://github.com/thoughtbot/factory_girl/blob/master/GETTING_STARTED.md