问题标签 [has-one]

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 投票
3 回答
81971 浏览

ruby-on-rails - Rails:在 Rails 中使用带有 has_one 关联的构建

在此示例中,我创建了一个userno profile,然后profile为该用户创建了一个。我尝试将 build 与has_one关联一起使用,但结果失败了。我看到这项工作的唯一方法是使用has_many. user应该最多只有一个profile

我一直在尝试这个。我有:

但是当我这样做时:

我得到错误:

Rails 中有没有办法拥有 0 或 1 个关联?

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 回答
3120 浏览

ruby-on-rails - Rails 模型关系:有一个也属于多个

我有两个模型,Modela 和 Modelb。

Modela 只能拥有一个 Modelb,但 Modelb 可以是多个 Modela 的一部分。

我现在拥有的是

不太确定我在那里做的整个 :foreign_key 事情,但它是我离开时的位置。当我试图让 Modelb 成为许多 Modela 的一部分时,我不想将 modela_id 字段添加到 Modelb 表中。

做这个的最好方式是什么?

0 投票
2 回答
924 浏览

mysql - Ruby on Rails has_one 模型不提供 ID 列

我有一个旧版 Rails(1.2.3 版)应用程序,它在许多服务器上运行都没有问题(更不用说我的本地环境了)。但是,部署到其最新的服务器上,我现在遇到了ActiveRecord::StatementInvalid: Mysql::Error: #23000Column 'video_id' cannot be null错误。

以下是简化的模型/关系:

下面是关系失败的 Rails 控制台记录:

有没有其他人遇到过 ActiveRecord 在清楚地知道它时不发送 ID 的情况?

0 投票
2 回答
1188 浏览

php - CakePHP 有一个低效率的地方吗?

我在 CakePHP 网站上查看示例,特别是链接模型中使用的 hasOne。 http://book.cakephp.org/view/78/Associations-Linking-Models-Together

我的问题是,CakePHP 是否使用两个查询来构建使用 hasOne 链接的模型中返回的数据的数组结构?

取自 CakePHP://$this->User->find() 调用的示例结果。

希望这一切都有意义。

0 投票
2 回答
1638 浏览

ruby-on-rails - has_one 更新问题

我有两个模型,用户和帐户。每个用户可能有一个帐户。

为用户创建帐户工作正常。我的问题是,当我尝试更新帐户时,以前的帐户 user_id 无效,并使用 user_id 创建了一个新帐户行。我不希望这种情况发生。我想使用对帐户的更改来更新现有行。我该怎么做呢?

谢谢。

0 投票
1 回答
899 浏览

cakephp - CakePHP:使用 hasOne 和 HABTM 的 saveAll

我设置了两个模型,需要保存在一个表单中。当用户使用“/deliveries/add/”表单时,我需要它来保存新的交付,并保存附加到该交付的新许可证。这是一个 hasOne 关系。

同样在同一个表格中,我需要选择许可证包括哪些产品和产品选项:

我遇到的问题是,CakePHP 似乎没有检测到我的许可证/产品和许可证/产品选项关系是 HABTM,并且表单助手只给了我一个单选下拉列表而不是多选下拉列表。即使我强制它成为表单助手中的倍数,它仍然不会保存数据,也不会正确填充编辑表单(即使它为产品选项提取了正确的标签)。我认为这可能与它与我的主要储蓄模式的关系如此遥远有关?

我已经在下面发布了相关代码。谢谢大家帮我看这个!

交付模型如下所示:

许可证模型如下所示:

Deliveries_controller 看起来像这样:

views/deliveries/add.ctp 如下所示:

0 投票
3 回答
1499 浏览

ruby-on-rails - Ruby on Rails - 创建具有关系的实体

我是 Rails 新手,所以请善待。

我正在构建一个“rolodex”类型的应用程序,这个问题是关于同时处理创建一个实体和几个关系实体的最佳方法。

对于(一个人为的)示例:我的应用程序将有一个Person模型,哪个has_one Contact_Info模型。在create.html.erb页面Person上,我的应用程序的用户同时创建人员和联系信息是有意义的。

在人员的创建视图/控制器中直接包含创建联系人的详细信息似乎不正确。处理这个问题的方法是什么?

0 投票
2 回答
239 浏览

ruby-on-rails - 在 RoR 中,如果我说 A has_one B,A 有一个 B 是强制性的吗?

我需要建立一个关系,以便 A 有一个 B,但是会有一些条目 A 没有 B。这可能吗?如果没有,怎么办?

谢谢阅读。

0 投票
3 回答
23220 浏览

ruby-on-rails - 我应该在 ruby​​ on rails 中使用 has_one 或 belongs_to 吗?

我希望有一个Status在一些用户定义的设置后相对静态的模型(并且不同的用户可能有不同的状态值)。

该状态可以应用于不同的模型,例如ContactEvent

所以返回的状态contact.status将不同于event.status

我想设计应用程序,使状态表具有不同的类型(contactsevents)。

什么是正确的策略和格式?

我正在考虑:has_one StatusContact模型中声明,并将 a 存储:status_id:contacts表中。同上Event

:statuses表将具有状态值、类型和日期。

这有意义吗?你能推荐一个更好的方法吗?