问题标签 [has-many-through]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
9 回答
22112 浏览

ruby-on-rails - 如何避免 has_many :through 关系中的重复?

我怎样才能实现以下目标?我有两个模型(博客和读者)和一个 JOIN 表,它允许我在它们之间建立 N:M 关系:

我现在想做的,是将读者添加到不同的博客。但是,条件是我只能将读者添加到博客一次。所以表中不能有任何重复项(相同readerID,相同blogIDBlogsReaders。我怎样才能做到这一点?

第二个问题是,我如何获得读者尚未订阅的博客列表(例如,填写下拉选择列表,然后可以使用该列表将读者添加到另一个博客)?

0 投票
1 回答
259 浏览

ruby-on-rails - 如何让用户在没有任何用户输入属性的情况下创建 has_many :through 表?

我有两个模型(用户和课程)和一个允许注册课程的 JOIN 表:

注册 JOIN 表具有其他属性,例如成绩、完成百分比等。但是,除了注册之外,没有任何属性需要用户输入。理想情况下,我希望有一个new_course_enrollment(@course, {:user_id => current_user} )链接在后台创建注册(用户无需输入任何内容)并重定向回课程页面,其中“注册”链接替换为“已注册”状态。有没有办法在模型中执行此操作,而无需更改默认的 RESTful Enrollments#new 控制器操作?

0 投票
4 回答
32688 浏览

ruby-on-rails - Rails has_many :通过连接模型中的额外属性查找

Ruby 和 Rails 都是新手,但我现在受过书本教育(这显然没有任何意义,哈哈)。

我有两个模型,事件和用户通过表 EventUser 加入

这个项目是一个日历,我必须在其中跟踪人们注册并为给定事件刮掉他们的名字。我认为多对多是一个好方法,但我不能这样做:

因为事件实际上没有额外的数据,所以 EventUser 模型有。虽然我可以做到:

这似乎与“铁轨方式”相反。谁能启发我,今晚(今天早上)这一直困扰着我很长时间?

0 投票
4 回答
5390 浏览

ruby-on-rails - 优雅地从 has_many 中选择属性:通过 Rails 中的连接模型

我想知道从 has_many :through 关联中的连接模型中选择属性的最简单/最优雅的方法是什么。

假设我们有具有以下 Item 类的 Items、Catalogs 和 CatalogItems:

此外,假设 CatalogueItems 具有位置属性,并且任何目录和任何项目之间只有一个 CatalogueItem。

检索位置属性的最明显但有点令人沮丧的方法是:

这很烦人,因为我们似乎应该能够做到@item.catalogs.first.position,因为我们已经完全指定了我们想要的位置:对应于@item 目录的第一个位置。

我发现得到这个的唯一方法是:

现在我可以做 Item.catalogs.first.position。但是,这似乎有点像 hack - 我正在向 Catalog 实例添加一个额外的属性。它还开辟了尝试在两种不同情况下使用视图的可能性,其中我使用 Catalog.find 或 @item.catalogs 填充 @catalogs。在一种情况下,职位会在那里,而在另一种情况下,它不会。

有没有人对此有很好的解决方案?

谢谢。

0 投票
2 回答
4755 浏览

ruby-on-rails - 在最后一个 has_many :through 记录被删除后销毁关联

使用常规has_many,可以选择:dependent => :destroy在删除父记录时删除关联。使用has_many :through,可能有其他父母与子记录相关联,因此:dependent => :destroy没有任何影响。

您如何确保子记录在上一次 HMT 关联中被孤立后被删除?

0 投票
3 回答
15548 浏览

ruby-on-rails - Rails:HasManyThroughAssociationNotFoundError

我在让has_many through协会工作方面遇到问题。

我不断收到此异常:

这些是涉及的模型:

这是我的架构:

0 投票
2 回答
2171 浏览

ruby-on-rails - has_many :通过 find_or_initialize_by 突破

我有一个模型 Feed,它拥有并属于许多 FilteredUser。在这种情况下,我通过 has_many :through 关系实现了它。

如果它不存在,我想创建一个记录,如果它确实存在,我想找到该对象。当我尝试使用 find_or_initialize_by(或 find_or_create_by)时,会抛出异常说undefined method 'feed_id=' for <FilteredUser..

这是代码:

有关如何解决此问题或如何 DRYly 解决此问题的任何建议?

谢谢!

0 投票
2 回答
3133 浏览

ruby-on-rails - 将 build 与 has_many 一起使用:通过

我有一个Entry模型和一个Category模型,其中一个条目可以有许多类别(通过EntryCategories):

创建新条目时,我通过调用来创建它@journal.entries.build(entry_params),其中entry_params是条目表单中的参数。但是,如果选择了任何类别,我会收到此错误:

请注意,第二行的“#”是逐字记录的;它不输出对象。

我尝试将表单上的类别选择框命名为categoriescategory_ids但两者都没有区别;如果其中任何一个在 中entry_params,则保存将失败。如果未选择任何类别,或者我categoriesentry_params( @entry_attrs.delete(:category_ids)) 中删除,则保存工作正常,但类别不保存,显然。

在我看来,问题是在保存 Entry 记录之前尝试创建 EntryCategory 记录?不应该建立照顾吗?

更新:

根据要求,这是 schema.rb 的相关部分:

此外,在更新操作中保存具有类别的条目也可以正常工作(通过调用@entry.attributes = entry_params),因此在我看来,问题只是基于在尝试创建 EntryCategory 记录时不存在的条目。

0 投票
4 回答
1361 浏览

ruby-on-rails - has_many 通过更新问题

一天多来一直在尝试对此进行排序,我确信这是我所缺少的一些简单的东西。

我有一个项目,它可以有一个主要类别和两个可选类别。我的项目模型的相关代码:

Category 类的相关代码:

并来自 ProjectCategory 类:

在我看来:

在我的控制器中:

好的,所以在更新现有项目时,我收到以下错误:

和相关的堆栈跟踪:

是不是说 main_category 存在问题并且它是一个泛型类?但为什么?该协会正确定义它AFAIK。

任何帮助表示赞赏!

维克拉姆

0 投票
3 回答
690 浏览

ruby-on-rails - 批量 has_many 的默认代码是什么:通过 rails 中的连接分配?

我有一个基本的 has_many :through 双向关系:

我想将日历分配给具有calendar_ids=has_many :through 设置的基本功能的事件,但是,我想覆盖此功能以添加一些额外的魔力。我查看了 rails 源代码,找不到该函数的代码。我想知道是否有人可以指出我。然后我将为这个类覆盖它以添加我想要的东西:)