0

これは些細なタイプミスだと確信していますが、わかりません。このコードは最小値までスラッシュダウンした後ですが、まだこの構文エラーが表示されます。私の愚かさを許してください。

FactoryGirl.define do
  factory :user do
    name "a name"
  end
end

@goodguy = FactoryGirl.create (:user, {:name => "a"})

私に与えている:

/Users/pitosalas/.rvm/gems/ruby-1.9.3-p194@repeatsurvey/gems/rspec-core-2.11.1/lib/rspec/core/configuration.rb:780:in `load': /Volumes/MonsterHD/mydev/repsurv/spec/models/access_control_spec.rb:29: syntax error, unexpected ',', expecting ')' (SyntaxError)
      @goodguy = FactoryGirl.create (:user, {:name => "a"})
                                           ^
/Volumes/MonsterHD/mydev/repsurv/spec/models/access_control_spec.rb:29: syntax error, unexpected '}', expecting keyword_end
      @goodguy = FactoryGirl.create (:user, {:name => "a"})
4

1 に答える 1

3

後のスペースを取り除くcreate

@goodguy = FactoryGirl.create(:user, {:name => "a"})

例えば

[3] pry(main)> FactoryGirl.create (:staff_user, {:first_name => "ben"})
SyntaxError: unexpected ',', expecting ')'
FactoryGirl.build (:staff_user, {:first_name => "ben"})
                               ^
[3] pry(main)> FactoryGirl.create(:staff_user, {:first_name => "ben"})
=> #<User::Staff id: 1, ...

説明すると、メソッド名の後にスペースを入れると、その中のすべてが(...)メソッド呼び出しの引数 #1 として扱われます。スペースで機能する別の方法、括弧を省略します。

@goodguy = FactoryGirl.create :user, {:name => "a"}

Ruby が式として評価しようとしているため、エラーが発生します(:user, {:name => "a"})。もちろん、それ自体では意味がありません。

[7] pry(main)> (:user, {:name => "a"})
SyntaxError: unexpected ',', expecting ')'
(:user, {:name => "a"})
       ^
于 2013-01-12T02:21:15.280 に答える