1
我正在关注Programming Phoenix
书以构建给定的Rumbl应用程序。我的问题与我们使用生成器自动创建大量功能的章节有关。所使用的命令是:代码生成不同于预期
$ mix phoenix.gen.html Video videos user_id:references:users url:string title:string description:text
现在的问题是,是,在几个地方,还有在书中给出的代码,以及我得到的差异。一个很好的例子是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