Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails factory_的简写块语法_Ruby On Rails_Ruby_Factory Bot - Fatal编程技术网

Ruby on rails factory_的简写块语法

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,

有可能对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, 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 girl
trait
方法的速记块语法是否有问题,这就是它出错的原因?或者:你只是不允许对factory\u girl
traits使用速记块语法
?有没有办法让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" }

哦,哇!太棒了,谢谢!看起来我需要学习更多关于积木的知识。谢谢!哦,哇!太棒了,谢谢!看起来我需要学习更多关于积木的知识。谢谢!