0
私は、2つのモデルの間に 'many-to-many'の関係を表すための結合テーブルを作成しました(has_many: through
アソシエーション付き)。ジョイン・テーブル・モデル用のファブリックを作成する必要がありますか?
私は今テストを書いています。私は、その結合テーブルモデル用のFabricatorを作成する必要があるのでしょうか?私の結合テーブルは2つの関連するモデルの外部キーしか持っていません。
私は、2つのモデルの間に 'many-to-many'の関係を表すための結合テーブルを作成しました(has_many: through
アソシエーション付き)。ジョイン・テーブル・モデル用のファブリックを作成する必要がありますか?
私は今テストを書いています。私は、その結合テーブルモデル用のFabricatorを作成する必要があるのでしょうか?私の結合テーブルは2つの関連するモデルの外部キーしか持っていません。
テストで作成するモデルの工場が本当に必要です。
あなたが持っている場合たとえば:
class User
has_many :user_projects
has_many :projects, through: :user_projects
end
class UserProject
belongs_to :user
belongs_to :project
end
class Project
has_many :user_projects
has_many :users, through: :user_projects
end
を必要なときにActiveRecordの参加モデルを作成するようあなたは本当にUserProject
のファクトリを必要としません。
Fabricator(:user) do
projects(count: 3)
end
Fabricator(:project) do
user
end
「ピボット」モデルは、単純なテーブルを結合するよりも、より多くので、独自の属性を持っている場合しかし、多くの場合、そのオブジェクトの工場を持っていると便利です:
class User
has_many :lists
has_many :tasks, through: :lists
end
class List
belongs_to :user
has_many :tasks
end
class Task
belongs_to :list
has_one :user, through: :list
end
Fabricator(:list) do
name { 'Shopping List' }
user
tasks(count: 3)
end
そうでもない最高世界の例 - すべてのコーヒーから... – max
それは感謝の感謝@maxを作る。しかし、「ActiveRecordが必要に応じて結合モデルを作成するので、UserProjectのファクトリは本当に必要ありません」と言うと、 '' 'has_many:through'''関連の場合もそうですか? –
はい、 'user.projects.create'または' project.users.create'を実行する最初の例では、 'user_projects'にレコードを挿入します。 – max