rspec如果为更新User.field提供NoMethodError

时间:2011-03-22 01:57:59

标签: ruby-on-rails ruby ruby-on-rails-3 rspec

为什么:

User.stuff_to_extract = 'boo'

在导轨c中工作

但是在rspec中它失败了:

 Failure/Error: @user1.stuff_to_extract = 'XXXXXX'
 NoMethodError:
   undefined method `stuff_to_extract=' for #<User:0x105cd4e60>



require 'factory_girl'

Factory.define :user do |f|
  f.sequence(:fname) { |n| "fname#{n}" }
  f.sequence(:lname) { |n| "lname#{n}" }
  f.sequence(:email) { |n| "email#{n}@google.com" }
  f.password               "password"
  f.password_confirmation { |u| u.password }
  f.invitation_code        "xxxxxxx"
  f.email_signature_to_extract        ""
end

1 个答案:

答案 0 :(得分:0)

在第一种情况下,您在User类上调用该方法。在第二个中,您在User实例上调用它。要修复第二个示例,请使用:

User.stuff_to_extract = 'XXXXXX'

或重新定义您的函数以供实例使用:

class User
  def stuff_to_extract= stuff
    ...
  end
end

而不是可用于班级:

class User
  def self.stuff_to_extract= stuff
    ...
  end
end