1
최근 피닉스와 협력하기 시작했습니다. 사실은 보통 SQL 데이터베이스가없는 상태입니다.외계인과 관련된 몇 가지 문제
나는 협회를 통합하기 위해 고전적인 블로그 작업을하고 있습니다. 나는 기본적인 협회 만들었습니다
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
이 하나 :
- 게시물이 범주에 속하는
- 카테 많은 게시물
을 여기 스키마는 잘 작동합니다. 미리로드 된 후에 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에 유지됩니다.
나는 CATEGORY_ID를 삽입 발견 유일한 해결책은 하나입니다
잘 작동하지만 난 그것을 할 기분이 아니 좋은 방법이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' 필드의 목록 '캐스팅 '으로 넘어 갔습니까? – Dogbert
효과가있었습니다! 사실 내가 캐스트를 사용하려고했을 때 : 필드 키로 카테고리를 사용하고 있었지만 분명히 의미가없는 연관성을 캐스팅하려고했습니다. 도움을 주셔서 감사합니다 –
@ ClerisseLucas이 질문에 답하기 위해 시간을내어 무엇이 잘못되었으며 어떻게 해결되었는지 알려주십시오. SO는 미래의 사용자를위한 지식 기반이므로 지식을 표현하는 것이 필수적입니다. – mudasobwa