Arrays 在当前作用域中找不到struct`schema::users::columns::roles`的名为`contains`的方法

Arrays 在当前作用域中找不到struct`schema::users::columns::roles`的名为`contains`的方法,arrays,postgresql,rust,rust-diesel,Arrays,Postgresql,Rust,Rust Diesel,我是个新手,正在尝试创建一个示例webapi。我使用postgres,有一个名为“角色”的列作为数组类型。我想使用diesel::expression_methods::PgArrayExpressionMethods中的contains方法,但有一个错误,提示“在当前作用域中没有为structschema::users::columns::roles找到名为的方法” schema.rs 表格!{ 用户(id){ id->Uuid, 用户名->Varchar, email->Varchar, 密

我是个新手,正在尝试创建一个示例webapi。我使用postgres,有一个名为“角色”的列作为数组类型。我想使用diesel::expression_methods::PgArrayExpressionMethods中的contains方法,但有一个错误,提示“在当前作用域中没有为struct
schema::users::columns::roles找到名为
的方法”

schema.rs

表格!{
用户(id){
id->Uuid,
用户名->Varchar,
email->Varchar,
密码->Varchar,
第一个名称->可为空,
姓氏->可为空,
活动->布尔,
角色->可为空,
在->时间戳处创建\u,
更新时间->时间戳,
}
}
在handler方法中:

users.filter(roles.contains(vec![“admin”]))。获取结果::(&conn)

就在我写这个问题的时候,我发现了问题所在。它不适用于可为空的数组列。我使用默认的空数组重新启动了迁移,现在它可以工作了:)

新schema.rs

表格!{
用户(id){
id->Uuid,
用户名->Varchar,
email->Varchar,
密码->Varchar,
第一个名称->可为空,
姓氏->可为空,
活动->布尔,
角色->数组,
在->时间戳处创建\u,
更新时间->时间戳,
}
}
新迁移/../up.sql

.
.
  roles text [] not null default array[]::text[], 
.
.