Frage

Ich versuche, herauszufinden, warum funktioniert das nicht.

Angenommen, Sie haben drei Modelle, Benutzer, Foo und Bar. Damit eine Bar den Benutzer erstellt werden soll, muss zuerst ein foo-Objekt erstellen und validieren.

Class User #snip!
has_many :foos
has_many :bars

Class Foo #snip!
belongs_to :user
has_many :bars

Class Bar #snip!
belongs_to :user
belongs_to :foo

Ich versuche, einen Funktionstest zum Laufen zu bringen, wo, wenn der Benutzer versucht, eine neue Bar zu machen, ohne einen gültig foo hat, sie für ein Foo zu der „neuen“ Aktion weitergeleitet.

Ich habe kein Problem mit dem Umleitungsszenario hat. Allerdings, wenn ich ein Benutzer-Setup mit einem gültigen Foo Objekt versuchen und versuchen, die „neue“ Aktion für eine Bar zu bekommen, wird es nach wie vor zu der „neuen“ Aktion des Foo-Controller weitergeleitet. Es ist immer noch nicht erkennen an, dass die Nutzer ein Foo hat.

Hier ist mein Controller:

 class BarsControllerTest < ActionController::TestCase
  setup :activate_authlogic
  def setup
    @request.env['HTTPS'] = nil
    @user = Factory.build(:user)
    @foo = Factory.build(:foo, :user => @user)
  end
   test "should get new when user has a valid foo" do
     @request.env['HTTPS'] = 'on'
     UserSession.create(@user)
     get :new
     assert_response :success
  end

Dies ist die Umleitung Funktion, die ich in meiner Anwendung Controller habe, die in meinem Bar-Controller genannt wird:

  def foo_required
    if current_user && @current_user.foos.valid.empty? && @current_user.foos.empty?
    flash[:notice] = "You must have a verified foo in order to create a Bar!"
    redirect_to new_foo_path
    elsif current_user && @current_user.foos.valid.empty?
    flash[:notice] = "You must verify your foos in order to create a Bar!"
    redirect_to foos_path
    end
 end

Hier ist die Foo Factory:

Factory.define :foo do |f|
   #attributes
   f.valid true
   f.association :user
end

Stattdessen werde ich umgeleitet „ https://test.host:80/foos/new“der Controller nicht anerkennt, dass der Benutzer hat eine Foo ...

Die Sitzung gilt so dass diese wie eine Fabrik Problem scheint, aber ich bin nicht sicher, was es ist.

War es hilfreich?

Lösung

Ich gehe davon aus, dass dieser factory_girl ist. Sie rufen Factory.build, die nicht in die Datenbank speichern etwas tut, so dass Sie nie für Ihren Verein benötigt, um den Fremdschlüsselwert haben. Schalten Sie diejenigen Factory.create und Sie sollten einen Unterschied sehen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top