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

时间:2014-05-01 06:40:32

标签: ruby forms ruby-on-rails-4 many-to-many multiple-tables

我在Ruby on Rails上编写了我的第一个应用程序(我以前只通过railstutorial.org),这是一个简单的电子处方服务,我运行的一件事我无法应对

我想创建添加新处方的表格,并添加一些属于这个新创建处方的药物。

第一个问题是 - 在填写表格处方时,我怎样才能真正将药物添加到处方药处方?我之前做过的是我首先使用@user.prescription.create(presc_attributes)和之后@prescription.relations.create(medicine_id)创建处方。

现在我需要在一个表单上使用一个按钮发送整个内容(一个HTML请求,我是对的吗?),除非你们有更好的想法。我也在努力想法在哪里实际制定方法创造这个处方。它应该在PrescriptionController#new中还是可能连接到RelationsController #new?

我已经阅读了几篇关于嵌套字段的文章,但它们似乎与我所需要的完全匹配。

我对RoR真的很新,很抱歉,如果我错过了重要的事情。

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

1 个答案:

答案 0 :(得分:0)

UPDATE ---

啊,我知道,我认为你想要的是与inverse_of的关系。

如果在连接模型上使用belongs_to,最好在belongs_to上设置:inverse_of选项,这意味着以下示例正常工作(其中tags是has_many:通过关联):< / p>

@post = Post.first
@tag = @post.tags.build name: "ruby"
@tag.save

最后一行应该保存通过记录(一个Taggable)。这仅在设置:inverse_of时才有效:

class Taggable < ActiveRecord::Base
  belongs_to :post
  belongs_to :tag, inverse_of: :taggings
end

如果您未设置:inverse_of记录,则关联将尽力使其与正确的逆匹配。自动反向检测仅适用于has_many,has_one和belongs_to关联。

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