生锈柴油协会和可识别给出“使用未申报的板条箱或模块”错误

问题描述 投票:0回答:1

我有这个结构:

#[derive(Queryable,Associations,Identifiable)]
#[diesel(belongs_to(User))]
#[diesel(belongs_to(Task))]
pub struct UserTask{
    pub id:i32,
    pub user_id:i32,
    pub task_id:i32
}

我实现了一个方法

pub struct TaskRepository;
impl TaskRepository{
    
    pub async fn find_by_user(c:&mut AsyncPgConnection,user:&User)->QueryResult<Vec<Task>>{
        let user_tasks = UserTask::belonging_to(&user).get_results::<UserTask>(c).await?;
        let task_ids: Vec<i32> = user_tasks.iter().map(|ut: &UserTask| ut.task_id).collect();         

    }

为了能够使用

belonging_to(&user)
,我使用了
Associations
Identifiable
特征来表示
UserTask
。但这给了我这个错误:

无法解决:使用未声明的板条箱或模块

user_tasks

如果我删除这些特征,错误就会消失。我不知道如何解决这个问题。

rust orm traits rust-diesel
1个回答
0
投票

Associations
Identifiable
派生宏都需要了解支持的
table!
定义。默认情况下,这将在结构名称的蛇形和 s 后缀版本的范围内查找它 - 在本例中为
user_tasks

您需要将支持

table!
定义的名称带入范围和/或使用
#[diesel(table_name = path::to::table)]
显式告诉派生宏它的位置。

© www.soinside.com 2019 - 2024. All rights reserved.