Rspec + интеграционное тестирование + activemodel = растерянно :) - PullRequest
3 голосов
/ 16 января 2012

У меня есть следующая проблема, которую я не понимаю: У меня есть модель пользователя:

class User < ActiveRecord::Base
...
  private
    def generate_token(column)
      begin
        self[column] = SecureRandom.urlsafe_base64
      end while User.exists?(column => self[column])
    end
end

и интеграционный тест:

it "should sign an user in" do
  user = FactoryGirl.create(:user)
  visit root_path
  click_link "Sign in"
  fill_in :email, with: user.email
  fill_in :password, with: user.password
  click_button
  controller.should be_signed_in
  click_link "Sign out"
  controller.should_not be_signed_in
end

, который не срабатывает на

User.exists?

с

NameError uninitialized constant User::User

замена указанной строки на

self.class.exists?

исправляет это .. Может кто-нибудь, пожалуйста, вывести меня из растерянности? :) заранее спасибо ..

1 Ответ

1 голос
/ 16 января 2012

Похоже, что этот метод выполняется внутри пространства имен области с User, может быть, вы определяете его через модуль (просто догадываясь).Кстати, вы можете написать следующее:

::User.exists?

И он должен начать «разрешение пространства имен» с корня.

...