【问题标题】:Getting datamapper to ignore 'type' when querying the database在查询数据库时让数据映射器忽略“类型”
【发布时间】:2010-06-02 13:28:45
【问题描述】:

我的应用程序中有一个单表继承结构,Admins 和 Mods 扩展了一个 User 类。该表使用了一个鉴别器值,因此每条记录的类型都是“admin”或“mod”

在寻找用户(登录时)时,我想写以下内容:

current_user = User.find(params[:email => email])

但是,这会创建包含

的 SQL
SELECT ...... WHERE ("type" IN ('User') AND .....

这意味着找不到记录。但是,如果我输入

current_user = Admin.find(params[:email => email])

我得到了用户(如果他们是管理员)。

由于仍然创建了“类型”IN(“用户”),因此我也尝试了以下操作但无济于事:

current_user = User.first(:email => email, :type => [Admin, Mod])

提前感谢您对此的任何帮助

【问题讨论】:

    标签: ruby datamapper single-table-inheritance


    【解决方案1】:

    我觉得应该是

    current_user = User.first(:email => email, :type => ['Admin', 'Mod'])
    

    【讨论】:

    • 不怕。生成的 sql 类似于: SELECT .....FROM "users" WHERE ("type" IN ('User') AND "type" IN ('Admin', 'Mod') AND "email" = ... ....
    猜你喜欢
    • 2017-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-12
    • 2014-09-05
    • 2020-04-25
    • 2021-08-11
    • 1970-01-01
    相关资源
    最近更新 更多