Помогите мне разобраться в этом синтаксисе в railstutorial.org (раздел о Factory Girl) - PullRequest
1 голос
/ 30 июля 2011

Я нахожусь в главе 7 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 = «что угодно» неверно?

Я действительно ненавижу не понимать вещи, когда занимаюсь учебными пособиями, поэтому я застрял здесь, пока не пойму это ...

Ответы [ 2 ]

2 голосов
/ 30 июля 2011

Это синтаксис рубинового блока, и вы найдете его везде в рельсах. Посмотрите на ваши миграции, например. Что вас смущает, так это синтаксис присваивания и тот факт, что скобки / скобки (как правило) необязательны в ruby. Это позволяет более читаемый код, который в противном случае может быть:

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

Дополнительная литература

0 голосов
/ 30 июля 2011

Это: user.name = 'Michael Hartl' не работает, потому что создатель из Factory Girl выбрал другой синтаксис, а именно: user.name "Michael Hartl". Я полагаю, вы только что приняли, что Factory Girl работает так. Если вы хотите узнать , почему , вы должны спросить у создателя .

...