複数の多対多を1つに挿入することは可能ですか?たとえば、company_id、user_id、role_id、asset_id、およびproject_idを持つAccessListテーブルがあります。Ectoの多対多の同じ行に複数の外部キーを追加する方法
これらはすべて数多くあります。 AccessListは参照テーブルです。要求は、私は、ユーザーを取得するに来れば
many_to_many :users, Db.User, join_through: Db.AccessList
many_to_many :assets, Db.Asset, join_through: Db.AccessList
many_to_many :roles, Db.Role, join_through: Db.AccessList
many_to_many :projects, Db.Project, join_through: Db.AccessList
例えば瞬間:ここ
は一例として、会社のスキーマaccesslistのここschema "access_lists" do
belongs_to :user, Db.User
belongs_to :role, Db.Role
belongs_to :asset, Db.Asset
belongs_to :project, Db.Project
belongs_to :company, Db.Company
timestamps()
end
のスキーマです、ロール、会社を作成したら、資産を作成してIDを一度にAccessListに挿入します。
サンプル:
def create_asset_relation(role, asset, user, company) do
changeset = create_asset_changeset(%{user_id: user.id, role_id: role.id, company_id: company.id, asset_id: asset.id})
with {:ok, _ } <- Repo.insert(changeset) do
{:ok, asset}
else
_ ->
"something gone wrong"
end
end
defp create_asset_changeset(params) do
AccessList.changeset(%AccessList{}, params)
end
?コードは機能しませんか?挿入は起こっていませんか? – mudasobwa
私のコードは正常に動作します。私のRailsでは、ActiveRecordを使用していましたが、すべての参照を取得して参照テーブルに挿入する必要はありません。私はこれを行うより良い方法があると思ったので、私は尋ねました。 –