我越來越瘋狂。現在在我的問題上工作了半天,找不到解決方案/錯誤。創建一個聊天,我得到了一個聊天模型和一個chat_user模型,其中有一個用戶模型作爲外鍵。Elixir/Phoenix Ecto預緊組合不適用於has_many
Chat有has_many :chat_users, Test.Chat.ChatUser, foreign_key: :chat_id
有很多,chat_user有belongs_to :user, Test.User
和belongs_to :chat, Test.Chat.Chat
。
我預裝協會有:
defp preload_associations(chat, params \\ nil) do
Repo.preload(chat, [
:chat_users
])
end
的錯誤我得到的是:** (Postgrex.Error) ERROR 42703 (undefined_column): column c0.user_id does not exist
在數據庫中的表chat_users
有場user_id
與外鍵。在我看來,Ecto在聊天中搜索user_id
而不是chat_user
。
任何想法我做錯了什麼?謝謝。
編輯:模型
defmodule Test.Chat.ChatItem do
@moduledoc false
use Test.Web, :model
schema "chats" do
field :name, :string
...
has_many :chat_users, Test.Chat.ChatUser, foreign_key: :chat_id
timestamps()
end
defmodule Test.Chat.ChatUser do
use Test.Web, :model
schema "chat_users" do
...
belongs_to :user, Test.User
belongs_to :chat, Test.Chat.Chat
end
而且
defmodule Test.User do
...
您最好在此發佈模型,在模型中發現錯誤比在字詞描述中更容易。 –
嘗試從'has_many'定義中移除'foreign_key :: chat_id'。 –
而且......你真的想預加載chat_users,還是要預加載用戶呢? –