Ruby on rails factory_的简写块语法
有可能对traits使用速记块语法吗 以这家工厂为例:Ruby on rails factory_的简写块语法,ruby-on-rails,ruby,factory-bot,Ruby On Rails,Ruby,Factory Bot,有可能对traits使用速记块语法吗 以这家工厂为例: FactoryGirl.define do factory :foo do name "name" # not using the block shorthand {} syntax, instead using do...end block syntax trait :my_name do name "Neil" end end end 使用这个工厂可以: create(:foo,
FactoryGirl.define do
factory :foo do
name "name"
# not using the block shorthand {} syntax, instead using do...end block syntax
trait :my_name do
name "Neil"
end
end
end
使用这个工厂可以:
create(:foo, traits: [:my_name])
但是,我想对我的特征使用速记块语法,如下所示:
FactoryGirl.define do
factory :foo do
name "name"
# using shorthand block syntax but does not work
trait :my_name {name "Neil"}
end
end
现在使用这个工厂可以排除错误。发生的情况如下:
create(:foo, traits: [:my_name])
语法错误,意外的“{”,应为关键字_end(SyntaxError)
这似乎很奇怪,因为我认为无论在哪里使用do…end
都可以选择速记{}
块语法
问题:我的factory\u girltrait
方法的速记块语法是否有问题,这就是它出错的原因?或者:你只是不允许对factory\u girltraits使用速记块语法
?有没有办法让factory\u girl使用速记块语法美国在台协会工作
你看,
trait
实际上是一个方法,它采用trait和block的名称。这是一个方法的两个参数。当你使用do…end
语法时,Ruby解释器可以猜到你给出了第二个(block)参数。但是,在第二个{…}
大小写,不清楚,因为您可能正在传递一个哈希值
这就是为什么您需要清楚地表明您正在传递第二个参数,它是一个如下所示的块:
trait(:my_name) { name "Neil" }
你看,trait
实际上是一个采用trait和block名称的方法。这是一个方法的两个参数。当你使用do…end
语法时,Ruby解释器可以猜到你给出了第二个(block)参数。但是,在第二个{…}
大小写,不清楚,因为您可能正在传递一个哈希值
这就是为什么您需要清楚地表明您正在传递第二个参数,它是一个如下所示的块:
trait(:my_name) { name "Neil" }
哦,哇!太棒了,谢谢!看起来我需要学习更多关于积木的知识。谢谢!哦,哇!太棒了,谢谢!看起来我需要学习更多关于积木的知识。谢谢!