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