15. “Most Rails developers do not write
object-oriented Ruby code.
They write MVC-oriented Ruby code by
putting models and controllers in the
expected locations.
It takes 2-3 years before developers
realize: “Rails is just Ruby.”
-- Mike Perham
23. class User < ActiveRecord::Base
validates :name, length: 20
validates :email, format: email
validates :age, numericality: true
24. class User < ActiveRecord::Base
validates :name, length: 20
validates :email, format: email
validates :age, numericality: true
25. class User < ActiveRecord::Base
validates :name, length: 20
validates :email, format: email
validates :age, numericality: true
User.create(
name: “RISE! This user is by ADMIN!”,
email: “rise@”
age: 21
)
26. class User < ActiveRecord::Base
validates :name, length: 20
validates :email, format: email
validates :age, numericality: true
User.create(
name: “RISE! This user is by ADMIN!”,
email: “rise@”
age: 21
)
27. class User < ActiveRecord::Base
validates :name, length: 20,
unless: → { creator_is_admin? }
validates :email, format: email
validates :age, numericality: true
User.create(
name: “RISE! This user is by ADMIN!”,
email: “rise@”
age: 21
)
32. defmodule User do
use Ecto.Schema
import Ecto.Changeset
schema "users" do
field :name
field :email
field :age, :integer
end
def changeset(user, params :empty) do
user
|> cast(params, ~w(name email), ~w(age))
|> validate_format(:email, ~r/@/)
|> validate_inclusion(:age, 18..100)
|> unique_constraint(:email)
end
end
34. defmodule User do
use Ecto.Schema
import Ecto.Changeset
schema "users" do
field :name
field :email
field :age, :integer
end
def changeset(user, params :empty) do
user
|> cast(params, ~w(name email), ~w(age))
|> validate_format(:email, ~r/@/)
|> validate_inclusion(:age, 18..100)
|> unique_constraint(:email)
end
end
35. defmodule User do
use Ecto.Schema
import Ecto.Changeset
schema "users" do
field :name
field :email
field :age, :integer
end
def changeset(user, params :empty) do
user
|> cast(params, ~w(name email), ~w(age))
|> validate_format(:email, ~r/@/)
|> validate_inclusion(:age, 18..100)
|> unique_constraint(:email)
end
end
39. class User::Create < Trailblazer::Operation
model User
contract do
property :name
property :email
property :age, type: Integer
validates :email, format: email
validates :age, inclusion: 1..200
end
def process(params)
validate(params) do
contract.save
end
end
end
41. class User::Create < Trailblazer::Operation
model User
contract do
property :name
property :email
property :age, type: Integer
validates :email, format: email
validates :age, inclusion: 1..200
end
def process(params)
validate(params) do
contract.save
end
end
end
42. class User::Create < Trailblazer::Operation
model User
contract do
property :name
property :email
property :age, type: Integer
validates :email, format: email
validates :age, inclusion: 1..200
end
def process(params)
validate(params) do
contract.save
end
end
end