class Lockable(models.Model):
locked_by = models.ForeignKey(
settings.AUTH_USER_MODEL,
null=True,
blank=True,
on_delete=models.SET_NULL,
)
class Meta:
abstract = True
def is_locked_by(self, locked_by):
return self.locked_by == locked_by
def lock(self, locked_by):
self.locked_by = locked_by
self.save()
def unlock(self):
self.locked_by = None
self.save()
class Document(Lockable, models.Model):
title = models.CharField(max_length=256)
body = models.TextField()
This is the start of the Ecto
schema:
defmodule FooWeb.Artifacts.Document do
use Ecto.Schema
import Ecto.Changeset
schema "documents" do
field :body, :string
field :title, :string
timestamps()
end
@doc false
def changeset(document, attrs) do
document
|> cast(attrs, [:title, :body])
|> validate_required([:title, :body])
end
end
How to implement the Lockable
code?