1
私は、ペットと獣医師に必要なデータのかなり簡単なセットを持っています。Rails:モデリング直感的なデータhas_manyを使用する:through
owner
を有することができ、多くのpets
pet
が多く(belongs_toの)により処理することができる有することができるveterinarians
veterinarian
を扱うことができ(have_many)pets
Owner
およびVeterinarian
は、 STIを使用して両方のサブクラスUser
はここにいくつかのコードです:
class Owner < User
has_many :pets
has_many :veterinarians, :through => :pets
end
class Veterinarian < User
attr_accessible :clinic_name
has_many :pets
has_many :owners, :through => :pets
end
class Pet < ActiveRecord::Base
attr_accessible :name, :date_of_birth, :species, :breed, :gender, :neutered
belongs_to :owner
belongs_to :veterinarian
end
そして、ここで失敗しているスペックです:
it "has various veterinarians" do
o = Owner.make!(:email => '[email protected]')
v1 = Veterinarian.make!(:email => '[email protected]')
v2 = Veterinarian.make!(:email => '[email protected]')
p = Pet.make!(:name => 'fluffy')
o.pets << p
v1.pets << p
v2.pets << p
o.pets.should have(2).records
o.veterinarians.should have(2).records
end
make!
ものは機械工器具の交換を使用して行うことです。ファクトリはオブジェクトを作成するだけです。
エラーは最後の行で発生します。獣医師は1レコードしか持っていないことが判明しました。私はpet
が所有者と獣医師の間に関係を作るたびに新しいペットを作りたくないので、従来の意味での結合表ではないことを理解しています。 Owner
has_many Pet
s、Pet
belongs_to:owner、Pet
has_and_belongs_to_many Veterinarian
のようなスキーマを使用する必要がありますか?
ありがとうございます!