如何通过Rails控制台访问实现HABTM连接的关联表?

2026-04-11 15:341阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计379个文字,预计阅读时间需要2分钟。

如何通过Rails控制台访问实现HABTM连接的关联表?

我得到了我想要的物品——拥有一份属于许多协会的,使用Rails指南中的简单指令。在控制台中它一直很正常,但我有些坚持以下内容。假设我有两个模型Article和Category,它们在模型中都有指令has_and_belongs_to_many '。

我得到了我想要的东西 – 拥有并属于许多协会,使用Rails指南中的简单指令.在控制台中它一切正常,但我有点坚持以下.

假设我有两个模型Article和Category,它们在模型中都有指令has_and_belongs_to_many,并且对应于数据库中的articles_categories表.在rails控制台中,我可以看到关联使用如下语句:

%> @x = Article.find(1) %> @x.categories

这样我在@x中存储了一组类别.精彩.但我真的找不到一种方法可以通过控制台添加一个新类别.现在,我使用SQL将值插入到连接表中.我希望有一种更聪明的Railsy方式来做这样的事情

如何通过Rails控制台访问实现HABTM连接的关联表?

%> @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

您只需添加到类别集合,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

本文共计379个文字,预计阅读时间需要2分钟。

如何通过Rails控制台访问实现HABTM连接的关联表?

我得到了我想要的物品——拥有一份属于许多协会的,使用Rails指南中的简单指令。在控制台中它一直很正常,但我有些坚持以下内容。假设我有两个模型Article和Category,它们在模型中都有指令has_and_belongs_to_many '。

我得到了我想要的东西 – 拥有并属于许多协会,使用Rails指南中的简单指令.在控制台中它一切正常,但我有点坚持以下.

假设我有两个模型Article和Category,它们在模型中都有指令has_and_belongs_to_many,并且对应于数据库中的articles_categories表.在rails控制台中,我可以看到关联使用如下语句:

%> @x = Article.find(1) %> @x.categories

这样我在@x中存储了一组类别.精彩.但我真的找不到一种方法可以通过控制台添加一个新类别.现在,我使用SQL将值插入到连接表中.我希望有一种更聪明的Railsy方式来做这样的事情

如何通过Rails控制台访问实现HABTM连接的关联表?

%> @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

您只需添加到类别集合,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