1
私は最近phoenixと仕事を始めましたが、実際には私は通常SQLデータベースなしで作業しています。ectoでのいくつかの問題
私は、関連性を統合するための古典的なブログに取り組んでいます。 私は基本的な関連を作成しました:
schema "categories" do
field :category_name, :string
field :logo, :string
has_many :posts, Lclp.Post
timestamps()
end
schema "posts" do
field :author, :string
field :content, :string
field :content_raw, :string
field :desc, :string
field :logo, :string
field :title, :string
belongs_to :category, Lclp.Category
timestamps()
end
この1、:
- ポストはカテゴリに属する
- カテゴリとして多くの記事
をここではそれらのスキーマがありますうまく動作している、私はpreloadの後にcategory_idからカテゴリ名を呼び出すことができます。
問題はポストを挿入するとき、私はカテゴリを選択することができますポストを作成するためのフォームを作成しましたで、タイトルを設定し、等...私のコントローラは、パターンマッチングにより、すべてのデータを取得:
def create_post(conn, %{"post" => post}) do
IO.inspect(post)
changeset = Lclp.Post.add_post(%Lclp.Post{}, post)
IO.inspect(changeset)
case Lclp.Repo.insert(changeset) do
{:ok, data} ->
conn
|> put_flash(:info, "Post bien ajouté")
|> redirect(to: adminpost_path(conn, :index))
{:error, changeset} ->
conn
|> assign(:section, "Creation d'un post (callback error)")
|> render("new.html", changeset: changeset, categories_tab: Lclp.Category.get_categories_name)
end
end
category_idを除くすべてのフィールドがDBに追加され、NULLにとどまります。うまく動作
def changeset(post, attrs \\ %{}) do
post
|> cast(attrs, [:title, :author, :desc, :content, :content_raw, :logo])
|> validate_required([:title, :author, :desc, :content, :content_raw])
end
def add_post(post, attrs) do
post
|> changeset(attrs)
|> change(%{category_id: String.to_integer(Map.fetch!(attrs, "category_id"))})
end
が、私はそれを行うための良い方法のない感じている:私はCATEGORY_IDを挿入することが分かった
唯一の解決策は、その一つです。
誰かが私が間違っていることのアイデアを持っている場合。
おかげ
どう '追加について:category_id'フィールドのリストへキャストに渡された? – Dogbert
それは働いた!事実は私がキャストを使用しようとしたときです:フィールドキーとしてカテゴリを使用していた、明らかに意味をなさない結合をキャストしようとしました。助けてくれてありがとう –
@ClerisseLucas何が間違っていたのか、それがどのように解決されたのかを説明しながら、この質問に答えてください。 SOは将来のユーザーのための知識ベースなので、知識を表現することは必須です。 – mudasobwa