问题标签 [associations]

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 投票
2 回答
9810 浏览

iphone - iPhone 文件扩展应用关联

在我的 iPhone 上,我正在运行一个名为 Caissa Chess 的应用程序。在向制造商注册应用程序(这是可选的)后,我收到了一封电子邮件,其中包含一个国际象棋谜题。邮件消息的关键部分,显示一个国际象棋图,如下所示:

点击此 URL 显示的图表会退出 Mail.app 并打开 Caissa Chess,然后显示图表,并允许您解决难题。

这是如何工作的?我想为 iPhone 制作一个小应用程序,它需要一个通过电子邮件发送的外部文件。我将首先需要了解发生了什么。

  • chess://如何以及在哪里定义将打开什么应用程序?
  • URL 的其余部分是什么意思?它是指本地文件,还是应用程序将其解析为实时 http: url?电子邮件正文包含图像附件。

我确信这种机制记录在某处,但我所拥有的书籍没有描述它,谷歌也没有帮助我。

先感谢您

夏克连

0 投票
1 回答
3105 浏览

ruby-on-rails - rails 以复杂的形式验证多个子模型

我正在以复杂的形式使用多个子模型(例如http://railsforum.com/viewtopic.php?id=28447)。表单效果很好,但在将表单数据接收到数据库之前,我需要验证子模型集的属性。我想出了一种主要工作,非常笨拙的方式来做到这一点。似乎必须有更好的方法,所以我正在寻求建议......

基本上一个人有很多分布。分布具有(除其他外)百分比属性。对于给定的人,他们的分配必须总计 100% 才有效。这对我来说是“交易”,但我认为我应该先给验证者一个机会。

我尝试将其编写为自定义验证器,但验证器仅适用于已保存到数据库中的数据。它没有检查表单提交的参数。换句话说,我能够通过表单输入无效的百分比,这些百分比被保存,然后由于模型中已经存在错误数据,随后的编辑都失败了。

接下来我在我的 Person 模型中扩展了 update_attributes,添加了一个事务:

retval 业务很丑陋,但这或多或少是有效的(有时,当它发现错误并重新渲染时,表单中会缺少一些待处理的分发版)。还有一个细微的差别让我相信这是一个糟糕的方法:如果我的分布关联是用辅助方法定义的,如下所示,我不能在我的update_attributes()(或在distributions_exactly_100?)中使用辅助方法,因为它们进入数据库而不是在刚刚分配但尚未提交的分布集上运行。

我能想到的唯一另一件事是在进入 update_attributes 的过程中将参数本身作为文本处理。但那是错误的。:)

还有其他人对整个儿童集合进行验证吗?正确的方法是什么?

0 投票
1 回答
1618 浏览

ruby-on-rails - 当 :allow_destroy => true 时移除关联而不是销毁对象

在 ActiveRecord 中使用新功能accepts_nested_attributes_for时,可以使用选项:allow_destroy => true. 设置此选项后,任何包含嵌套属性(如{"_delete"=>"1", "id"=>"..."}传递给)的哈希update_attributes都将删除嵌套对象。

简单设置:

问题:我如何 - 而不是删除嵌套对象时"_delete" => "1"- 只是删除关联?(即在上述情况下,将用户的 forum_id 设置为 nil)

额外问题:如果我还想在删除关联时更改嵌套对象的属性怎么办?(例如设置状态或时间戳)

0 投票
2 回答
3142 浏览

ruby-on-rails - 如何更新模型对象的关联对象?

我想要以下内容:

其中用户 has_one 个人资料。

0 投票
2 回答
26766 浏览

hibernate - Hibernate 单向一对多关联 - 为什么连接表更好?

在本文档中(向下滚动到单向部分):

http://docs.jboss.org/hibernate/stable/annotations/reference/en/html_single/#entity-mapping-association-collections

它说与连接表的单向一对多关联比仅在拥有的实体中使用外键列更可取。我的问题是,为什么它更受欢迎?

0 投票
3 回答
448 浏览

ruby-on-rails - Rails,ActiveRecord:我如何获得关联的结果加上一些条件?

我有两个模型,用户和组。我还有一个加入表 groups_users。我在组模型中有一个关联:

我想添加与用户关联相同但包含一些条件的pending_users。我希望将其设置为关联,以便在 sql 调用中处理所有条件。我知道有一种方法可以为同一模型设置多个访问器,即使名称与表名的实际含义无关。是类名吗?

任何帮助将不胜感激,谢谢

0 投票
4 回答
33699 浏览

ruby-on-rails - 让fields_for和accepts_nested_attributes_for与belongs_to关系一起工作

我似乎无法使用Rails 2.3belongs_to的新功能在 Rails 视图中生成嵌套表单以生成关系。accepts_nested_attributes_for我确实检查了许多可用的资源,看起来我的代码应该可以正常工作,但fields_for对我来说是爆炸性的,我怀疑它与我如何配置嵌套模型有关。

我遇到的错误是一个常见的错误,可能有很多原因:

以下是涉及的两个模型:

也许这就是我做“荣”的地方,因为一个帐户可以有一个“所有者”,也可以有一个“用户”,但一个用户只有一个“帐户”,基于用户模型 account_id 键。

这是 new.html.haml 中让我大吃一惊的视图代码:

这是新操作的控制器代码:

当我尝试加载 /account/new 时,出现以下异常:

如果我尝试使用神秘的“构建”方法,它只会在控制器中爆炸,可能是因为构建只是用于多记录关系:

如果我尝试在控制器中使用@account.owner_attributes = {} 或@account.owner = User.new 进行设置,我会回到原来的错误,“@account[owner] 不允许作为实例变量的名称”。

有没有其他人有新的accepts_nested_attributes_for 方法来处理belongs_to 关系?你有什么特别或不同的事情要做吗?所有官方示例和示例代码(如Ryans Scraps 上的精彩内容)都与多记录关联有关。

0 投票
2 回答
5759 浏览

ruby-on-rails - 创建 created_by 列并与 rails 关联?

叹息......我觉得这个是个大新手,所以可以说我有几个模型:

所以我的问题是我不知道如何获取创建问题或答案的用户,应该在创建问题(或答案)时确定用户,并且用户应该来自当前用户的会话(来自 authlogic 的用户模型和控制器)请参见此处:

现在, current_user 辅助方法工作正常,但我如何设置创建问题或答案的用户?像 id 一样只想说 @question.user

顺便说一句,我的问题架构有一个 created_by 列,但是当我创建一个新问题时,它保持为空。

0 投票
8 回答
12340 浏览

ruby-on-rails - Rails 成语避免在 has_many 中重复:通过

我的 Rails 应用程序中的用户和角色之间存在标准的多对多关系:

我想确保一个用户只能被分配一次任何角色。任何插入重复项的尝试都应忽略该请求,而不是引发错误或导致验证失败。我真正想要表示的是一个“集合”,其中插入集合中已经存在的元素没有任何效果。{1,2,3} U {1} = {1,2,3},而不是 {1,1,2,3}。

我意识到我可以这样做:

或者通过创建一个包装方法(例如add_to_roles(role)),但我希望有一些惯用的方式通过关联使其自动化,这样我就可以写:

它只是为我工作。这样,我就不必记住检查重复或使用自定义方法。我缺少的框架中有什么东西吗?我首先认为 has_many 的 :uniq 选项可以做到这一点,但它基本上只是“选择不同的”。

有没有办法以声明方式做到这一点?如果没有,也许通过使用关联扩展?

以下是默认行为如何失败的示例:

0 投票
4 回答
309 浏览

visual-studio - VS .NET 类设计器

假设Being类有一个Habitat类型的属性。这两个类都在它们自己的 .cs 文件中实现。当我将两个类从类设计器拖放到新的类图上时,我看不到从存在到栖息地的关联线,而在代码中存在关联。我做错了什么,或者这根本没有在VS中实现?