У меня есть модель учетных записей, которая содержит некоторую базовую информацию об учетной записи (имя учетной записи, веб-сайт и т. Д.).Затем у меня есть пользовательская модель, которая имеет следующее в app / models / user.rb
belongs_to :account
. У меня также есть следующее в моем маршруте. Rb
map.resources :account, :has_many => [:users, :othermodel]
проблема Iсталкиваюсь с тем, что следующий тест не пройден:
test "should create user" do
assert_difference('User.count') do
post :create, :user => { } #this is the line it's actually failing on
end
assert_redirected_to user_path(assigns(:user)) #it doesn't get here yet
end
Ошибка, которую он выдает: «Не удается найти учетную запись без идентификатора», поэтому я вроде понимаю, ПОЧЕМУ это не удается, из-за того, что это нене должен иметь объект account (или account_id как бы), чтобы знать, под какой учетной записью создается пользователь.Я пробовал варианты следующего, но я полностью потерян:
post :create, :user => { accounts(:one) } #I have the 'fixtures :accounts' syntax at the top of the test class
post :create, [accounts(:one), :user] => { }
post :create, :user => { accounts(:one), #other params for :user }
и, как я уже сказал, почти все варианты, которые я мог придумать.Я не могу найти много документации по этому вопросу, и это может быть причиной того, что люди перешли на фабрики для проведения тестовых данных, но я хочу понять, что является стандартным в Rails, прежде чем переходить к другим вещам.
Может кто-нибудьпомогите мне заставить это работать?
ОБНОВЛЕНИЕ:
Мне удалось выполнить тест на неудачу в другом месте, я должен был убедиться, что тест действительно может перейти к действию создания (есть некоторыеauthlogic в моем приложении)
теперь он говорит
неопределенный метод 'users' для nil: Class
Так что теперь он говорит, что может 'Я не могу найти коллекцию пользователей на моем объекте @account в контроллере, в основном потому, что он все еще не может найти @account, хотя на самом деле он не может найти нужную учетную запись.Так что мой before_filter :find_account
работает до такой степени, что не ломается, но, похоже, он не находит аккаунт.
Я пробовал post :create, :id => @account.id, :user => { }
, но безрезультатно.Также пробовал post :create, :account => accounts(:one), :user => { }
и :user => { :account => accounts(:one) }
, снова с тем же результатом.