首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自定义rails/mongoid关系名称不起作用

自定义rails/mongoid关系名称不起作用
EN

Stack Overflow用户
提问于 2012-02-09 04:55:49
回答 1查看 412关注 0票数 0

我正在尝试让自定义关系名称在Mongo中工作。

"collage“是一个用BSON字段填充的BSON文档,BSON字段是工作Ids。下面是数据库中关于“拼贴”的信息:

代码语言:javascript
复制
Collage.create(slide_one: client.work.first.id, slide_two: client.work.second.id, slide_three: client.work.third.id)

因此,拼贴画是充满工作Ids的mongo记录。我希望能够编写@collage.work_one或@collage.slide_one.work_one,或者@collage.slide_one.work来完成我想要的工作。

自定义命名这些关联被证明是徒劳的。到目前为止,我已经尝试了两种方法:

这似乎是在mongo网站上这样说的,但当我设置它并调用@collage.work_one.inspect时,我得到的结果是零。http://mongoid.org/docs/relations.html (页面底部)

collage.rb

代码语言:javascript
复制
has_one :work_one, class_name: 'Work', inverse_of: :slide_one

work.rb

代码语言:javascript
复制
belongs_to :slide_one, class_name: 'Collage', inverse_of: :work_one

从字面上看,@collage.work_one.inspect只是打印出"nil“

我也试过了

collage.rb

代码语言:javascript
复制
has_one :work_one, class_name: 'Work', as: :work_oneable

work.rb

代码语言:javascript
复制
belongs_to :work_oneable

但这给了我:

代码语言:javascript
复制
uninitialized constant WorkOneable

任何帮助或想法非常感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-09 08:09:21

我相信你的类声明是正确的(第一个)。但是,在分配字段时,您应该使用实际对象而不是id,如下所示:

代码语言:javascript
复制
Collage.create(slide_one: client.work.first, slide_two: client.work.second, slide_three: client.work.third)

希望这能有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9201263

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档