Trait diesel::associations::Identifiable
source · [−]Expand description
This trait indicates that a struct represents a single row in a database table.
This must be implemented to use associations.
Additionally, implementing this trait allows you to pass your struct to update
(update(&your_struct)
is equivalent to
update(YourStruct::table().find(&your_struct.primary_key())
).
This trait is usually implemented on a reference to a struct, not the struct itself.
Deriving
This trait can be automatically derived by adding #[derive(Identifiable)]
to your struct.
By default, the “id” field is assumed to be a single field called id
.
If it’s not, you can put #[primary_key(your_id)]
on your struct.
If you have a composite primary key, the syntax is #[primary_key(id1, id2)]
.
By default, #[derive(Identifiable)]
will assume that your table
name is the plural form of your struct name.
Diesel uses very simple pluralization rules.
It only adds an s
to the end, and converts CamelCase
to snake_case
.
If your table name does not follow this convention
or the plural form isn’t just an s
,
you can specify the table name with #[table_name = "some_table_name"]
.
Our rules for inferring table names is considered public API.
It will never change without a major version bump.
Associated Types
Required methods
Returns the identifier for this record.
This takes self
by value, not reference.
This is because composite primary keys
are typically stored as multiple fields.
We could not return &(String, String)
if each string is a separate field.
Because of Rust’s rules about specifying lifetimes,
this means that Identifiable
is usually implemented on references
so that we have a lifetime to use for Id
.