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