首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多个控制器,两个“深度”的关系

多个控制器,两个“深度”的关系
EN

Stack Overflow用户
提问于 2014-05-01 14:40:32
回答 1查看 67关注 0票数 0

我正在用Ruby on Rails编写我的第一个应用程序(我以前只用过railstutorial.org ),这是一个简单的电子处方服务,我运行在一件我不能应付的事情上。

我想创建表单来添加新的处方,以及添加一些属于这个新创建的处方的药物。

第一个问题是-当填写表单时处方还不存在时,我如何向处方中实际添加药物?我之前做的是先用@user.prescription.create(presc_attributes)创建处方,然后用@prescription.relations.create(medicine_id)创建。

现在,我可能需要在一个表单上使用一个按钮(一个HTML请求,对吗?)除非你们有更好的主意。我也在苦苦思索一个想法,那就是在哪里创建这个处方的方法。它是否应该在PrescriptionController#new中,或者也可以连接到RelationsController#new?

我读过几篇关于嵌套fields_for的文章,但它们似乎并不完全符合我的需求。

我是RoR的新手,所以如果我错过了一些重要的东西,我很抱歉。

这也是我的EER,http://i.stack.imgur.com/sa9CB.png

EN

回答 1

Stack Overflow用户

发布于 2014-05-01 15:32:04

更新

啊,我明白了,我想你想要的是和inverse_of的关系。

如果您在join模型上使用belongs_to,最好在belongs_to上设置:inverse_of选项,这意味着下面的示例可以正常工作(其中标签是一个has_many :通过关联):

代码语言:javascript
复制
@post = Post.first
@tag = @post.tags.build name: "ruby"
@tag.save

最后一行应该保存直通记录(一个可标记的)。只有在设置了:inverse_of的情况下才能执行此操作:

代码语言:javascript
复制
class Taggable < ActiveRecord::Base
  belongs_to :post
  belongs_to :tag, inverse_of: :taggings
end

如果您不设置:inverse_of记录,该关联将尽最大努力将自身与正确的反向匹配起来。自动反向检测仅适用于has_many、has_one和belongs_to关联。

来自http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html

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

https://stackoverflow.com/questions/23403249

复制
相关文章

相似问题

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