J'ai un modèle person
qui est la base pour tous les types d'utilisateurs dans mon application Rails 4. J'ai un modèle administrator
, un modèle worker
, un modèle client
qui accepte tous les attributs imbriqués. Voici mon administrator
modèleComment configurer les tests unitaires pour un contrôleur avec attributs imbriqués dans Rails avec Minitest
class Administrator < ActiveRecord::Base
belongs_to :person
accepts_nested_attributes_for :person
... other model code here
end
Dans ma base de données SQLite J'ai une contrainte qui dit person_id
ne peut pas être nulle.
Le test de contrôleur pour le administrator
échoue avec le message »
ActiveRecord::StatementInvalid: SQLite3::ConstraintException: NOT NULL
constraint failed: administrators.person_id: INSERT INTO "administrators"
("created_at", "updated_at") VALUES (?, ?)
administrators_controller_test.rb
contient les éléments suivants,
setup do
@administrator = administrators(:administrator_montgomery_burns)
@person = people(:person_montgomery_burns)
end
test "should create administrator" do
assert_difference('Administrator.count') do
post :create,
administrator: {
person_id: @administrator.person_id
}
end
assert_redirected_to administrator_path(assigns(:administrator))
end
J'ai aussi essayé,
test "should create administrator" do
assert_difference('Administrator.count') do
post :create,
administrator: {
person: {
first_name: @person.first_name,
... all other person attributes
}
}
end
assert_redirected_to administrator_path(assigns(:administrator))
end
Toutes les idées comment cela devrait-il être fait?