我刚刚从 Node.js & Mongoose 转来,尝试使用 Grape 和 Mongoid 重写以前的程序。现在遇到了一个问题:
Mongoose 支持 Virtual 字段( http://mongoosejs.com/docs/guide.html#virtuals ),比如有两个 key,firstName 和 lastName,可以建立一个 Virtual 的 name 字段以方便使用,同时 Mongoose 不会将 name 字段存入数据库中。
然而我发现在 Mongoid 的文档中没有找到对应的内容,我自己尝试如下方法:
class User include Mongoid::Document field :firstName, type: String field :lastName, type: String
def name "#{self.firstName} #{self.lastName}" end
end
这样可以实现通过 user.name 得到用户的信息,但是想使用如下方式直接将其作为 Grape 的 Response body 时则不会包含 name 字段:
get do User.find(...) end
我猜想也许是 Mongoid 对 to_json 做了处理,但更进一步的解决方法就不知道了。不知道大家有没有什么解决方案,非常感谢~(≧▽≦)/~
话说体验了几天,Ruby 真的很好用~