J'essaie de tester le scénario suivant:
-> J'ai un modèle appelé Team qui prend tout son sens lorsqu'il a été créé par un utilisateur. Par conséquent, chaque instance d'équipe doit être liée à un utilisateur.
Afin de tester cela, j'ai fait ce qui suit:
describe Team do
...
it "should be associated with a user" do
no_user_team = Team.new(:user => nil)
no_user_team.should_not be_valid
end
...
end
Ce qui me force à changer le modèle de l'équipe en tant que:
class Team < ActiveRecord::Base
# Setup accessible (or protected) attributes for your model
attr_accessible :name, :user
validates_presence_of :name
validates_presence_of :user
belongs_to :user
end
Cela vous semble-t-il correct? Je suis juste inquiet de rendre l'attribut: user accessible (affectation en masse).
J'utilise habituellement cette approche:
describe User do
it "should have many teams" do
t = User.reflect_on_association(:teams)
expect(t.macro).to eq(:has_many)
end
end
Une meilleure solution serait d’utiliser la gemme shoulda qui vous permettra de simplement:
describe Team do
it { should belong_to(:user) }
end
it { Idea.reflect_on_association(:person).macro.should eq(:belongs_to) }
it { Idea.reflect_on_association(:company).macro.should eq(:belongs_to) }
it { Idea.reflect_on_association(:votes).macro.should eq(:has_many) }
Vous pouvez vous le moyen le plus simple de le faire comme.
it { expect(classroom).to have_many(:students) }
it { expect(user).to have_one(:profile }
un lien utile pour référence. https://Gist.github.com/kyletcarlson/6234923