繁体   English   中英

错误:在此 scope 中找不到属性“table_name”

[英]error: cannot find attribute `table_name` in this scope

我想使用 rust 柴油进行页面查询,我正在使用此代码在 rust 中进行单元测试:

#[cfg(test)]
mod test {

    use std::env;
    use diesel::{Connection, ExpressionMethods, PgConnection, QueryDsl, RunQueryDsl};
    use rust_wheel::common::query::pagination::PaginateForQuerySource;
    use crate::model::diesel::rhythm::rhythm_schema::favorites::dsl::favorites;
    use crate::model::diesel::rhythm::rhythm_schema::favorites::like_status;
    use crate::models::Favorites;

    #[test]
    fn page_test(){
        use crate::model::diesel::rhythm::rhythm_schema::favorites::dsl::*;
        use rust_wheel::common::query::pagination::{PaginateForQueryFragment, PaginateForQuerySource};
        let conn = establish_music_connection();
        let query = favorites
            .filter(like_status.eq(1))
            .paginate(1)
            .per_page(10)
            .load::<Favorites>(&conn)
            .expect("query fav failed");

        println!("{:?}", 1);
    }

    pub fn establish_music_connection() -> PgConnection {
        let database_url = std::env::var("MUSIC_DATABASE_URL").expect("MUSIC_DATABASE_URL must be set");
        PgConnection::establish(&database_url).expect(&format!("Error connecting to {}", database_url))
    }
}

显示如下错误:

error: cannot find attribute `table_name` in this scope
  --> src/models.rs:15:3
   |
15 | #[table_name = "favorites"]
   |   ^^^^^^^^^^

这是我的models.rs定义,这两个模型存储在不同的数据库中:

use rocket::serde::Serialize;
use serde::Deserialize;
use crate::model::diesel::dolphin::dolphin_schema::dashboard;
use crate::model::diesel::rhythm::rhythm_schema::favorites;

#[derive(Insertable, Serialize, Queryable, Deserialize,Default)]
#[table_name = "dashboard"]
pub struct Dashboard {
    pub id: i32,
    pub app_count: i32,
    pub user_count: i32
}

#[derive(Serialize, Queryable, Deserialize,Default)]
#[table_name = "favorites"]
pub struct Favorites {
    pub id: i64,
    pub song_id: String,
    pub created_time: i64
}

为什么会这样? 我应该怎么做才能解决它?

只有Insertable派生宏处理#[table_name =...]属性。 因此,如果您不使用它,则不应包含它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM