【发布时间】:2014-07-02 00:00:51
【问题描述】:
当我尝试运行以下代码时,DataMapper 仅在这两行中调用了 3 个查询。谁能解释它为什么会这样做?
@u = User.first(:uid => 1, :fields => [:uid, :name])
json @u
这会调用以下查询:
SELECT "uid", "name" FROM "users" WHERE "uid" = 1 ORDER BY "uid" LIMIT 1
SELECT "uid", "email" FROM "users" WHERE "uid" = 1 ORDER BY "uid"
SELECT "uid", "accesstoken" FROM "users" WHERE "uid" = 1 ORDER BY "uid"
值得注意的是,datamapper 在name 上验证了=> unique
此外,accesstoken 是延迟加载的,因此只有在特别要求时才应查询它,这必须在将其序列化为 json 对象时发生。
编辑: 我添加了我的模型类以进行澄清。我只想对 uid 和 name 进行一次查询,而不必从对象中单独提取它们。也许这是唯一的方法?
property :uid, Serial
property :name, String
property :email, String
property :accesstoken, Text
回答: 使用内置此支持的 dm-serializer gem https://github.com/datamapper/dm-serializer
【问题讨论】:
标签: ruby datamapper