我在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'是怎么回事?
我真的不喜欢在做教程时不理解的东西,所以我一直困在这里直到我理解它......
答案 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
答案 1 :(得分:0)
这个:user.name = 'Michael Hartl'
不起作用,因为Factory Girl的the creator选择了不同的语法,即:user.name "Michael Hartl"
。我想你只是接受Factory Girl就像这样。如果您想知道为什么,您必须询问creator。