问题标签 [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.
ruby-on-rails - Ruby on Rails - has_many :through with nested_attributes_for
我遇到了一个通过谷歌、论坛、群组等在网上找不到太多的问题,所以我要举手向比我更聪明的人寻求帮助:)
我有一个使用nested_attributes_for 的rails 项目设置,两个模型之间存在一对一的关系。在我最近不得不将项目修改为 has_many :through 关系之前,它工作起来非常容易并且符合预期。
代码看起来像这样:
P型号:
F型:
F_P 型号:
只要代码保持如上,一切正常(当然除了通过 Web GUI 进行的 CRUD 操作)。但是,一旦我将嵌套属性部分添加到 P 模型中,如下所示:
它会导致我的测试失败并且 GUI 可以正常工作(减去未强制执行的验证)。
关于让这个验证与 nested_attributes_for 一起愉快地工作的正确方法的任何想法,还是我只需要在 P 控制器中创建自己的 CRUD 操作来处理它,就像一年左右一样?
ruby-on-rails - 从连接表模型更新关联记录
我有一个 has_many :through 关系,通过管理层将球员与球队联系起来。
我想在团队表上有一个计数器(有点像计数器缓存),它告诉我自本周开始以来有多少新关联。当然,计数器缓存不会起作用,因为它总是会给出所有曾经创建的关联。
我尝试从管理模型中更新相关团队。这永远不会成功。即使关联团队的增量似乎已保存好,但在创建关联后,我的计数器仍为 0。
我也尝试过使用观察者。观察员按我的预期被调用,我能够检索团队,但是对它的任何更新都没有保存。
我确定我遗漏了一些明显的东西!实现这一点的rails方法是什么?
我设置了一个 github 来说明问题,运行 rake spec 会失败。
ruby-on-rails - 在 has_many :through 关系中指定外键
我有以下三个模型:用户、项目和分配。
用户has_many
通过作业进行项目。但是,Assignment 实际上有两个与用户相关的外键:(user_id
代表被分配项目的用户)和completer_id
(代表完成项目的用户)。
通常,user_id
并且completer_id
将是相同的(如果分配项目的用户完成它)。但是,如果另一个用户完成它,则 user_id 和 completer_id 将不同。
在我的用户模型中,我有以下内容:
我想创建另一个关联,称为:completed_projects
,它completer_id
用作模型中 User 的外键:through
,而不是:user_id
. 是否有可能做到这一点?
而且,顺便说一句,我知道这个:foreign_key
选项。但是,使用 时会忽略此选项:through
,因此我想知道是否有办法在没有它的情况下执行此操作。
最后,我应该提到我对其他设计持开放态度,如果不能以这种方式完成并且有人可以想到更好的方法。
ruby-on-rails - Rails:has_many 有额外的细节吗?
虽然我不是一个完整的 Ruby/Rails 新手,但我仍然很年轻,我正在尝试弄清楚如何构建一些模型关系。我能想到的最简单的例子是烹饪“食谱”的想法。
食谱由一种或多种成分以及每种成分的相关数量组成。假设我们在所有成分的数据库中有一个主列表。这表明了两个简单的模型:
如果我们只是想将食谱与成分相关联,那就像添加适当的belongs_to
and一样简单has_many
。
但是,如果我们想将附加信息与这种关系相关联呢?每个Recipe
都有一个或多个Ingredients
,但我们要标明数量Ingredient
。
Rails 的建模方法是什么?它是类似于 a 的东西has_many through
吗?
ruby-on-rails - Rails 类名称/类型不适用于多态 has_many :通过
我有一个管理借方和贷方的发票系统。基本上,发票金额是通过其借方的总和获得的,余额是通过将其贷方的总和减去总金额得出的。
我用四个模型做这个。
- 发票
- 订单项
- 借方
- 信用
它的工作方式是通过具有称为可记录的多态关联的连接模型(行项)。乍一看,一切似乎都正常工作。但是,检查行项目显示虽然 recordable_id 显示正常,但 recordable_type 为 nil。
下面是代码的分解:
谁能在这里指出我正确的方向?
sql - 如何在 Rails 中使用命名范围进行排他而不是包含查询?
我创建了一个应用程序,它根据传递给它的多个服务来查找服务提供者。这是通过 has many_through 完成的,所以有一个连接对象。基本上,如果用户要求提供服务 A 和服务 B 的服务提供商,我的范围将返回提供服务 A 和服务 B 的服务提供商或提供服务 A 或服务 B 的其他服务提供商。而不是这个,我们想仅限于提供两种服务的提供商。
我的范围如下所示:
如您所见,我正在使用 IN 运算符来执行此操作。但是 IN 就像说“给我找任何有服务 A 或服务 B 的提供商”,而我真正想要的是“给我找任何同时有服务 A 和服务 B 的服务提供商”。
是否可以在单个查询中进行这种类型的过滤,或者如果它们不支持所有必需的服务,我是否需要进行复合查询或简单地遍历结果并将它们从列表中删除?
ruby-on-rails - rails has_many 关系(4 个模型)以及如何在视图中访问
我有 4 个模型:transac、transac_data、item、dvd_details
现在在“transac”视图中,我需要访问所有这些模型中的内容,例如:
但我还需要从“DvdDetails”模型中访问一些信息,该模型是“最远”的 transac。
我意识到做这样的事情不会真正起作用:
并在“transac”视图的索引中执行此操作
我需要做什么才能做到这一点?
任何帮助表示赞赏!谢谢!
ruby-on-rails - ActiveRecord::HasManyThroughAssociationNotFoundError 在 UserController#welcome
我在rails中有一个多对多的关系。所有数据库表都相应地适当命名。所有模型文件都是复数并使用下划线分隔单词。所有命名约定都遵循 ruby 和 rails 标准。我在我的模型中使用了很多,如下所示:
这个错误还有什么可能来自?
ActiveRecord::HasManyThroughAssociationNotFoundError in UsersController#welcome
Could not find the association :users_posts in model Post
ruby-on-rails - 过滤 has_many 中的连接表:通过 RoR
我有以下模型,在这些模型中,我使用 Rails has_many :through 范式通过 Translation 表加入 Language 和 Products 表:
我想查找特定产品的英语翻译。
我可以列出相关的语言和翻译:
这打印:
(此产品有英文和法文翻译。)
如何获得与语言prod
对应的翻译en
?
如果这没有意义,这里是等效的 SQL:
SELECT t.* FROM products p, translations t, languages l WHERE l.id = t.language_id AND p.id = t.product_id AND l.lang_code = 'en';
ruby-on-rails - 嵌套有许多通过插件和命名范围
我有一个用户模型(:名称,:密码,:电子邮件),事件模型(:名称,:等)和兴趣模型(:名称)[>所有单数<]
然后我创建了两个连接表 -> UsersInterests 和 EventsInterests;每个不包含主键,仅分别由 user_id/interest_id 和 event_id/interest_id 组成。[>复数<]
我的模型使用 嵌套的有很多通过插件
Whew..ok 所以我想创建一个 named_scope 来查找与特定用户有共同兴趣的所有事件。这是有人帮助我的一些代码。
当我从控制器运行时 =>
我得到错误:
谁能看到我搞砸了什么?