@[Controller("thing")]
@[VirtualAction("new", "create", Protect(Role("admin")))]
@[VirtualAction("edit", "update", Protect(OwnerRelation))]
class ThingController : ApplicationController {
@[Action, Protect(Role("admin"))]
void create ( Request req, Response res ) {...}
@[Action]
void index ( Request req, Response res ) {...}
@[Action, Protect(Role("member"))]
void show ( Request req, Response res ) {...}
@[Action, Protect(OwnerRelation)]
void update ( Request req, Response res ) {...}
@[Action("delete"), Protect(Role("admin"))]
void remove ( Request req, Response res ) {...}
}
@[Model("thing")]
@[ForbidMassAssignment]
class Thing : Model {
@[Attr, Shallow]
@[Validate( Present, Unique, Length("<=", 128) )]
A!string name;
@[Attr, Shallow]
@[Validate( Length("[]", 16, 256) )]
A!string description;
@[Attr(BelongsTo, User), Shallow]
@[Validate( Present )]
A!User user;
@[Attr(HasMany, Tag, Through(Tagging))]
@[Validate( NoDuplicate )]
A!(Tagging[]) tags;
@[Attr]
@[Validate( Present )]
A!ulong size;
@[Attr]
@[Validate( Present )]
A!ulong weight;
@property
ulong ratio () {...}
}