我得到了我想要的东西 - 拥有并属于许多协会,使用Rails指南中的简单指令。在控制台中它一切正常,但我有点坚持以下。
假设我有两个模型文章和类别,它们的模型中都有指令has_and_belongs_to_many,并且对应于数据库中的articles_categories表。在rails控制台中,我可以看到关联使用如下语句:
%> @x = Article.find(1)
%> @x.categories
这样我在@x中存储了一组类别。精彩。但我真的找不到一种方法可以添加'通过控制台新的类别。现在,我使用SQL将值插入到连接表中。我希望有一种更聪明的Railsy方法来做这样的事情
%> @x.article.categories.category_id = 1 # id of category
%> @x.article.categories.article_id = 1 # id of article
%> @x.save # and written to the database
我正在寻找在rails控制台中执行此操作的方法 - 所以我实际上感觉到正在发生的事情,而不是有效的代码片段,我无法获得。我正在使用Rails 4.1.6
答案 0 :(得分:6)
您只需添加到categories
集合,Rails就可以管理数据库关系。
> category = Category.find(1)
> article = Article.find(1)
> article.categories << category
> article.save
这将添加articles_categories记录,其article_id为1,category_id为1.而且,更好的是,对象将彼此了解:
> article.categories.include?(category) # => true
> category.articles.include?(article) # => true
答案 1 :(得分:1)
为什么不尝试:
@article.categories.build (params)
其中params将包含新类别的属性