tutorial rails factorybot factory_girl_rails example create bot ruby factory-bot

ruby - rails - ¿Cómo usar FactoryGirl para crear un atributo llamado "alias"?



factorybot create (2)

Defina una variable para la factory .. do bloquee y llame a los métodos en ella.

FactoryGirl.define do factory :blah do |f| f.name "dummy" f.alias "dummy" end end

Me pregunto si es posible crear un atributo llamado "alias" usando FactoryGirl, ya que alias es una palabra reservada en Ruby.

FactoryGirl.define do factory :blah do name "dummy" alias "dummy" end end

He probado varias combinaciones de cosas que se escapan, pero no consigo que nada útil funcione.


Ruby no sabe si estás tratando de llamar a un método llamado alias o alias un método como otro, y el valor predeterminado es el último. Se puede desambiguar haciendo

self.alias "dummy"

Es decir, especificando explícitamente el receptor. Este suele ser el camino a seguir en otros casos donde es ambiguo si está llamando a un método o haciendo otra cosa, por ejemplo:

self.foo = ''bar''

para llamar al método foo= lugar de crear una variable local llamada foo.

Para un pequeño número de nombres de campo esto no funcionará. El DSL de Factory girl utiliza method_missing por lo que si el objeto DSL tiene un método con ese nombre, se llamará en su lugar. En esos casos, puede hacer lo que el azúcar DSL normal hace por usted y llamar a add_attribute directamente:

FactoryGirl.define do factory :blah do add_attribute :name, "some value" end end

es lo mismo que

FactoryGirl.define do factory :blah do name "some value" end end