私はProgramming Phoenix
のRumblアプリケーションを構築するための本を読んでいます。私の問題は、ジェネレータを使って多くの機能を自動的に作成する章と関係があります。使用するコマンドは:コード生成が予想外です
$ mix phoenix.gen.html Video videos user_id:references:users url:string title:string description:text
問題は今ではいくつかの場所では、本の中で与えられたコードと私は取得していますとの違いがあることです。 1つの良い例は、web/models/video.ex
モジュールです。私がなってしまったコードは次のとおりです。
defmodule Rumbl.Video do
use Rumbl.Web, :model
schema "videos" do
field :url, :string
field :title, :string
field :description, :string
belongs_to :user, Rumbl.User
timestamps()
end
@doc """
Builds a changeset based on the `struct` and `params`.
"""
def changeset(struct, params \\ %{}) do
struct
|> cast(params, [:url, :title, :description])
|> validate_required([:url, :title, :description])
end
end
本の中で、changeset
機能は以下のように与えられているのに対し:
@required_fields ~w(url title description)
@optional_fields ~w()
def changeset(model, params \\ :empty) do
model
|> cast(params, @required_fields, @optional_fields)
(後者のスニペットでタイプミスを言い訳してください、私は手で入力しなければなりませんでした)
なぜこの違いがあるのかわかりません。バージョンの違いが原因でしょうか?さらに重要なことは、この違いはどういう意味ですか?
もう一度、ありがとう!私は、これらのバージョンの違いは非常に迷惑なと言うことができますか? :-) – dotslash
あなたがちょうど勉強しているときは間違いなく非常に迷惑です。私はPragProgがすぐに本の更新版をリリースすることを願っています。 – Dogbert