Ошибка модели ассоциации FactiveGirl: «SystemStackError: уровень стека слишком глубокий»

Я использую Ruby on Rails 3,0,9, RSpec-rails 2 и FactureGirl. Я пытаюсь изложить модель ассоциации фабрики, но у меня проблемы.

У меня есть файл factories/user.rb , такой как

FactoryGirl.define do
  factory :user, :class => User do
    attribute_1
    attribute_2
    ...

    association :account, :factory => :users_account, :method => :build, :email => 'foo@bar.com'
  end
end

, и файл factories/users/account.rb , такой как:

FactoryGirl.define do
  factory :users_account, :class => Users::Account do
    sequence(:email) {|n| "foo#{n}@bar.com" }
    ...
  end
end

Вышеприведенный пример работает так, как ожидалось в файлах спецификаций, но , если на заводе :users_account Оператор Я добавляю код association: user , чтобы

FactoryGirl.define do
  factory :users_account, :class => Users::Account do
    sequence(:email) {|n| "foo#{n}@bar.com" }
    ...
    association      :user
  end
end

я получил следующую ошибку:

Failure/Error: Unable to find matching line from backtrace
SystemStackError:
  stack level too deep

Как решить эту проблему, чтобы получить доступ к связанным моделям с обеих сторон\фабрик (то есть в файлах спецификаций я хотел бы использовать методы модели ассоциации RoR, такие как user.account и account.user ) ?

P.S.: Я прочитал вопрос Factory Girl and has_one, и мой случай очень близок к случаю, объясненному в связанном вопросе. То есть, у меня тоже есть _ одна связь (между классами User и Users:: Account ).

-121--1166111-

Широковещательный приемник onReceive () получает вызов несколько раз У меня есть boot_completed приемник, который получает уведомление при загрузке.

У меня есть приемник boot_completed, который получает уведомление при загрузке.

      
          
              
          
    

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

Создание таймера, подобного этому. Это не повторяющийся таймер, не так ли:

     private void setAlarm(Context context, long interval) {
        try {
            AlarmManager alarms = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
            Intent intent = new Intent(RespondAlarmReceiver.ACTION_RESPOND_SMS);
            intent.putExtra("isChecking", true);
            PendingIntent alarmIntent = PendingIntent.getBroadcast(context, 0, intent, 0);

            int alarmType = AlarmManager.ELAPSED_REALTIME_WAKEUP;
            long triggerAtTime = SystemClock.elapsedRealtime() + interval; //interval is 60,000
            alarms.set(alarmType, triggerAtTime, alarmIntent);
        }
        catch (Exception e) {
            Log.e(DEBUG_TAG, "Unable to set alarm");
        }

Если кто-нибудь знает, как подключить отладчик Eclipse к широковещательному приемнику Boot-up или к работающей службе, это было бы фантастически.

8
задан amit 20 September 2011 в 01:23
поделиться