问题标签 [has-many]
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 - 在 `has_many` `through` 关联上使用 `find_or_create_by` 时出错
我在使用关联时遇到了find_or_create_by
问题has_many
through
。
find_or_create_by
当我调用对象的roles
关联时, Rails 会引发错误User
。
我可以通过如下更改代码来解决该问题:
我很想知道是否find_or_create_by
与has_many
through
协会合作。
ruby-on-rails - Rails:对于模型 A has_many B belongs_to C 返回 A 其中 B 属于 C 并且 B 是最近为给定 A 创建的?
我有三个模型 A、B 和 C,其中A has_many B
; B belongs to C
, 和B has a created_on timestamp
. C has_many A 到 B。
我想返回所有A,其中A有一个属于C的B,而B是该A最近创建的B。
我可以用方法循环来做到这一点。这可以仅使用 named_scopes 完成吗?还是其他一些优雅/有效的方式?
根据对真实世界 (TM) 示例的请求,A、B 和 C 可以想象为例如 Pets (A)、PetsName (B) 和 Names (C)。PetsNames 在特定时间赋予 Pets,任何给定的 Name 都可以赋予多个 Pets。任何宠物都可以有多个名称(一个 :through 关系)。对于给定的名称,我想要该名称是该宠物最近创建的 PetName 的所有宠物。电话可能看起来像@name.pets.most_recently_named_as
ruby-on-rails - Rails ActiveRecord 关联更新不一致
我遇到了一些我不理解的 Rails 2.3.5 ActiveRecord 行为。似乎一个对象可以以不一致的方式更新其关联 ID。
最好用一个例子来解释:
创建一个Post
带有字符串属性的模型'title'
和一个Comment
带有字符串属性的模型'content'
。
以下是关联:
场景#1:在下面的代码中,我创建Post
了一个关联的,通过'ing 第一个Comment
创建第二个,将第二个添加到第一个并发现第二个与第二个关联而没有显式分配。Post
find
Comment
Post
Post
Comment
场景#2:再次运行上面的命令,但是这次插入一个额外的命令,从表面上看,应该不会影响结果。额外的命令post2.comments
是在创建之后comment2
和添加到.comment2
post1
请注意,在此场景中只有一个与相关联的评论,post2
而在场景 1 中则有两个。
大问题:为什么要post2.comments
在添加新的之前运行Comment
以post1
对与评论相关联的评论产生任何影响post2
?
ruby-on-rails - 如何在 Rails 中创建“双向”多对多关系?
假设我们有一个摄影网站。任何作者都可以订阅以接收来自任何其他作者的更新。显然,如果作者 A 订阅了作者 B,这并不意味着 B 订阅了 A。所以我们建立模型
这样我们就可以使用
- some_author.subscribed_by_author -- some_author 订阅的作者列表。
- 对于任何订阅,我们都可以知道两端(谁订阅了谁)
但问题是如何仅使用rails(不使用普通SQL)获取订阅某个作者的人员列表,即得到答案:“谁订阅了some_author?”
问题:Rails 中是否有能力让双方的关系发挥作用,即不仅是写作some_author.subscribed_BY_author
,还有拥有some_author_subscribed_TO_author
?如果有,那是什么?
PS明显的解决方案是
- 更改数据库设计,添加名为“direction”的列
- 每次创建订阅时创建 2 条记录
添加到作者模型
has_many :subscribed_BY_author, :through => :subscriptions, :source => :subscribed_to, :conditions => "direction = 'by'"
has_many :subscribed_TO_author, :through => :subscriptions, :source => :subscribed_to, :conditions => "direction = 'to'"
但我想知道是否有不改变数据库设计的解决方案。
ruby-on-rails - 聚合条件 has_many rails 关联
我不确定这是否可行甚至更可取
但我想建立一个 has_many 关系或有条件的 named_scope 类型关系,以减轻我对一个简单关系而不是两个的痛苦。
目前我有两个模型,它们基本上包含相同的信息,并且通过相同的 key room_id 属于相同的模型房间,但以两种不同的方式保存数据。一个包含特定日期的特定信息,第二个包含一周中几天的通用费率。主要障碍是,Availables 可能根本不包含特定记录的信息,在这种情况下,它需要根据 room_rates 来获取平均价格,而不是给定日期的具体价格。
任何指示或建议?谢谢
可用的
房屋价格
或者可能是 finder_sql 方法?如:
但它也需要通过加入 room_rates 来填补不存在的 bookdates 的缺失记录
orm - 在 CakePHP 中定义两个模型之间同时具有多和一关联的方法?
在 CakePHP 框架中,我长期以来一直遇到问题的一件事是定义两个模型之间的同步hasOne
和hasMany
关系。例如:
BlogEntry hasMany Comment
BlogEntry hasOne MostRecentComment
(最近的字段MostRecentComment
在哪里)Comment
created
在 BlogEntry 模型属性中定义这些关系是有问题的。CakePHP 的 ORM 将 has-one 关系实现为INNER JOIN
,因此只要有多个 Comment,BlogEntry::find('all')
调用就会返回每个 BlogEntry 的多个结果。
过去我曾通过几种方式解决过这些情况:
使用模型回调(或者,有时,甚至在控制器或视图中!),我已经模拟了一个 MostRecentComment :
$this->data['MostRecentComment'] = $this->data['Comment'][0];
如果我需要以除 by 以外的任何方式订购 Comments,这会很快变得丑陋Comment.created
。它也没有 Cake 的内置分页功能来按 MostRecentComment 字段排序(例如,将 BlogEntry 结果按MostRecentComment.created
.维护一个额外的外键,
BlogEntry.most_recent_comment_id
. 这很烦人,并且破坏了 Cake 的 ORM:含义是BlogEntry belongsTo MostRecentComment
. 它有效,但只是看起来......错了。
这些解决方案还有很多不足之处,所以前几天我坐下来解决这个问题,并研究了一个更好的解决方案。我已经在下面发布了我的最终解决方案,但是我很高兴(也许只是有点羞愧)发现有一些令人难以置信的简单解决方案一直以来都在逃避我。或任何其他符合我标准的解决方案:
- 它必须能够按该
Model::find
级别的 MostRecentComment 字段进行排序(即,不仅仅是结果的按摩); - 它不应该需要
comments
orblog_entries
表中的其他字段; - 它应该尊重 CakePHP ORM 的“精神”。
(我也不确定这个问题的标题是否尽可能简洁/信息丰富。)
ruby-on-rails - Ruby on Rails activerecord 在一个 sql 和 Will_Paginate 中找到平均值
我有以下模型关联:一个学生模型和 has_many 分数。
我需要列出一个列表,显示他们的姓名和平均、最低、最高分数。到目前为止,我正在对每个学生使用 student.scores.average(:score),并且我意识到它正在为每个学生执行一个 sql。如何使用一个加入的 sql 创建列表?
另外我将如何将它与 Will_Paginate 插件一起使用?
谢谢
ruby-on-rails - 我有一个 has_many 关系,我想设置自定义限制和偏移量。以及计算它们
嗨,
我的代码:
我想一次只得到 10 张图像,偏移量为 10,就像这样
而不是这样
然后我想以某种方式计算该配置文件的所有图像。
谢谢 (:
结尾
现在我想将此行为添加到其他 has_many 关系中。但我不想复制粘贴代码......知道吗?:P
ruby-on-rails - Rails 通过 *all* 关联的 tags.id 查找
假设我有一个模型 Taggable has_many 标签,我如何通过关联标签的 taggable_id 字段找到所有可标记对象?
结果是:
语法令人难以置信,但不符合我的需要,因为生成的 sql 返回具有任何、部分或全部标签的任何可标记。
如何找到带有字段 taggable_id 值 1、2 和 3 的相关标签的 taggable?
感谢您的任何建议。:)
更新:
我找到了一个解决方案,如果他们最终出现在这里,我会为其他人发布。也不过为了引起其他人的注意,他们的改进建议我很乐意接受。:)
ruby-on-rails - Rails,使用 :has_many 删除子级而不删除父级
我有
我想删除MyObjects
容器中的所有内容,而不必删除MyContainer
. 我的模型确实有:dependent => :destroy
,但是我不想删除并重新创建对象,因为它比较慢。
像这样的东西不起作用:
我怎样才能做到这一点?