我有一个基本的自动生成的Rails4项目,其中包含两个具有相互HABTM关系的表:
class Page < ActiveRecord::Base
has_and_belongs_to_many :topics
end
class Topic < ActiveRecord::Base
has_and_belongs_to_many :pages
end
相应的连接表也存在(称为pages_topics
)并且似乎正常工作。
我已经发现使用rails console
我可以分别使用create
和<<
将这两个表与新条目和现有条目相关联:
Page.find(1).topics.create(tname: "topic name") ## for new topics
Page.find(1).topics << Topic.find(3) ## for existing topics
但是,我不确定如何在我的代码中使用它们。
create
和update
方法中将这些添加到我的控制器类中?params.require(...).permit(...)
param保护模式一起做到这一点?或者有没有更好的方法来做到这一点,我还没有学到呢?
答案 0 :(得分:1)
您需要一个连接表来管理关系。查看Rails指南here了解更多信息。完成所有设置之后,您可以修改表单(如果您需要或需要)和控制器的create
方法来构建您需要的许多兄弟姐妹/父母/孩子。
def new
@page = Page.new
@page.build_topic
2.times do # or something like this
@page.topic.build
end
end
凭借他们的关系,你可以反转控制器代码,以相反的方式建立关系。
答案 1 :(得分:0)
如果您想要特定页面的主题列表(Id),请将您的代码放在控制器中,然后将您的代码放在pagesController.rb中,如果您想与特定主题(id)相关的页面列表建立关系,那么请输入您的代码在topicsController.rb中。如果您有任何其他要求,请明确说明,以便我能够理解并根据您的需要回答您。