问题标签 [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.

0 投票
1 回答
5075 浏览

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_byhas_many through协会合作。

0 投票
1 回答
1186 浏览

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

0 投票
1 回答
518 浏览

ruby-on-rails - Rails ActiveRecord 关联更新不一致

我遇到了一些我不理解的 Rails 2.3.5 ActiveRecord 行为。似乎一个对象可以以不一致的方式更新其关联 ID。

最好用一个例子来解释:

创建一个Post带有字符串属性的模型'title'和一个Comment带有字符串属性的模型'content'

以下是关联:

场景#1:在下面的代码中,我创建Post了一个关联的,通过'ing 第一个Comment创建第二个,将第二个添加到第一个并发现第二个与第二个关联而没有显式分配。PostfindCommentPostPostComment

场景#2:再次运行上面的命令,但是这次插入一个额外的命令,从表面上看,应该不会影响结果。额外的命令post2.comments创建之后comment2和添加到.comment2post1

请注意,在此场景中只有一个与相关联的评论,post2而在场景 1 中则有两个。

大问题:为什么要post2.comments在添加新的之前运行Commentpost1对与评论相关联的评论产生任何影响post2

0 投票
2 回答
560 浏览

ruby-on-rails - 如何在 Rails 中创建“双向”多对多关系?

假设我们有一个摄影网站。任何作者都可以订阅以接收来自任何其他作者的更新。显然,如果作者 A 订阅了作者 B,这并不意味着 B 订阅了 A。所以我们建立模型

这样我们就可以使用

  1. some_author.subscribed_by_author -- some_author 订阅的作者列表。
  2. 对于任何订阅,我们都可以知道两端(谁订阅了谁)

但问题是如何仅使用rails(不使用普通SQL)获取订阅某个作者的人员列表,即得到答案:“谁订阅了some_author?”

问题:Rails 中是否有能力让双方的关系发挥作用,即不仅是写作some_author.subscribed_BY_author,还有拥有some_author_subscribed_TO_author?如果有,那是什么?

PS明显的解决方案是

  1. 更改数据库设计,添加名为“direction”的列
  2. 每次创建订阅时创建 2 条记录
  3. 添加到作者模型

    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'"

但我想知道是否有不改变数据库设计的解决方案。

0 投票
2 回答
1353 浏览

ruby-on-rails - 聚合条件 has_many rails 关联

我不确定这是否可行甚至更可取

但我想建立一个 has_many 关系或有条件的 named_scope 类型关系,以减轻我对一个简单关系而不是两个的痛苦。

目前我有两个模型,它们基本上包含相同的信息,并且通过相同的 key room_id 属于相同的模型房间,但以两种不同的方式保存数据。一个包含特定日期的特定信息,第二个包含一周中几天的通用费率。主要障碍是,Availables 可能根本不包含特定记录的信息,在这种情况下,它需要根据 room_rates 来获取平均价格,而不是给定日期的具体价格。

任何指示或建议?谢谢

可用的

房屋价格

或者可能是 finder_sql 方法?如:

但它也需要通过加入 room_rates 来填补不存在的 bookdates 的缺失记录

0 投票
1 回答
376 浏览

orm - 在 CakePHP 中定义两个模型之间同时具有多和一关联的方法?

在 CakePHP 框架中,我长期以来一直遇到问题的一件事是定义两个模型之间的同步hasOnehasMany关系。例如:

BlogEntry hasMany Comment
BlogEntry hasOne MostRecentComment(最近的字段MostRecentComment在哪里)Commentcreated

在 BlogEntry 模型属性中定义这些关系是有问题的。CakePHP 的 ORM 将 has-one 关系实现为INNER JOIN,因此只要有多个 Comment,BlogEntry::find('all')调用就会返回每个 BlogEntry 的多个结果。

过去我曾通过几种方式解决过这些情况:

  1. 使用模型回调(或者,有时,甚至在控制器或视图中!),我已经模拟了一个 MostRecentComment :
    $this->data['MostRecentComment'] = $this->data['Comment'][0];
    如果我需要以除 by 以外的任何方式订购 Comments,这会很快变得丑陋Comment.created。它也没有 Cake 的内置分页功能来按 MostRecentComment 字段排序(例如,将 BlogEntry 结果按MostRecentComment.created.

  2. 维护一个额外的外键,BlogEntry.most_recent_comment_id. 这很烦人,并且破坏了 Cake 的 ORM:含义是BlogEntry belongsTo MostRecentComment. 它有效,但只是看起来......错了。

这些解决方案还有很多不足之处,所以前几天我坐下来解决这个问题,并研究了一个更好的解决方案。我已经在下面发布了我的最终解决方案,但是我很高兴(也许只是有点羞愧)发现有一些令人难以置信的简单解决方案一直以来都在逃避我。或任何其他符合我标准的解决方案:

  • 它必须能够按该Model::find级别的 MostRecentComment 字段进行排序(即,不仅仅是结果的按摩);
  • 它不应该需要commentsorblog_entries表中的其他字段;
  • 它应该尊重 CakePHP ORM 的“精神”。

(我也不确定这个问题的标题是否尽可能简洁/信息丰富。)

0 投票
1 回答
1793 浏览

ruby-on-rails - Ruby on Rails activerecord 在一个 sql 和 Will_Paginate 中找到平均值

我有以下模型关联:一个学生模型和 has_many 分数。

我需要列出一个列表,显示他们的姓名和平均、最低、最高分数。到目前为止,我正在对每个学生使用 student.scores.average(:score),并且我意识到它正在为每个学生执行一个 sql。如何使用一个加入的 sql 创建列表?

另外我将如何将它与 Will_Paginate 插件一起使用?

谢谢

0 投票
2 回答
1544 浏览

ruby-on-rails - 我有一个 has_many 关系,我想设置自定义限制和偏移量。以及计算它们

嗨,

我的代码:

我想一次只得到 10 张图像,偏移量为 10,就像这样

而不是这样

然后我想以某种方式计算该配置文件的所有图像。

谢谢 (:


结尾

现在我想将此行为添加到其他 has_many 关系中。但我不想复制粘贴代码......知道吗?:P

0 投票
1 回答
1347 浏览

ruby-on-rails - Rails 通过 *all* 关联的 tags.id 查找

假设我有一个模型 Taggable has_many 标签,我如何通过关联标签的 taggable_id 字段找到所有可标记对象?

结果是:

语法令人难以置信,但不符合我的需要,因为生成的 sql 返回具有任何、部分或全部标签的任何可标记。

如何找到带有字段 taggable_id 值 1、2 和 3 的相关标签的 taggable?

感谢您的任何建议。:)

更新:

我找到了一个解决方案,如果他们最终出现在这里,我会为其他人发布。也不过为了引起其他人的注意,他们的改进建议我很乐意接受。:)

0 投票
3 回答
12526 浏览

ruby-on-rails - Rails,使用 :has_many 删除子级而不删除父级

我有

我想删除MyObjects容器中的所有内容,而不必删除MyContainer. 我的模型确实有:dependent => :destroy,但是我不想删除并重新创建对象,因为它比较慢。

像这样的东西不起作用:

我怎样才能做到这一点?