帮我理解railstutorial.org中的这个语法(关于Factory Girl的部分)

时间:2011-07-30 12:46:28

标签: ruby-on-rails factory-bot railstutorial.org

我在chapter 7 of the railstutorial.org,,作者开始解释课程的语法和细节越来越少。

我不了解他在使用Factory Girl创建用户时使用的以下语法:

 Factory.define :user do |user|
  user.name                  "Michael Hartl"
  user.email                 "mhartl@example.com"
  user.password              "foobar"
  user.password_confirmation "foobar"
end

我不是在复制和粘贴代码,所以最初,在阅读之后,我写了这样的代码:

user.name = 'Michael Hartl'
etc

并且测试没有运行。重读该部分后,我看到作者没有使用=。这是什么意思?如果我理解正确,Factory girl会创建一个User实例,然后为它们分配这些属性。那么user.name ='what'是怎么回事?

我真的不喜欢在做教程时不理解的东西,所以我一直困在这里直到我理解它......

2 个答案:

答案 0 :(得分:2)

这是ruby块语法,你会在rails中找到它。例如,查看您的迁移。令你困惑的是赋值的语法以及括号/大括号在ruby中(通常)是可选的这一事实。这允许更可读的代码,否则可能是:

 Factory.define :user do |user|
  user.name("Michael Hartl")
  user.email("mhartl@example.com")
  user.password("foobar")
  user.password_confirmation("foobar")
end

Further reading

答案 1 :(得分:0)

这个:user.name = 'Michael Hartl'不起作用,因为Factory Girl的the creator选择了不同的语法,即:user.name "Michael Hartl"。我想你只是接受Factory Girl就像这样。如果您想知道为什么,您必须询问creator