问题标签 [polymorphic-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.
sql - 指向多个表之一的外键约束
我有一个表,其中一列source_id
的值应该是另一个表的主键,尽管它是哪个表会因记录而异。每条记录都必须有一个用于source_table
指定源记录表的值,以及一个用于source_id
指定源表中行的值。
有没有办法利用数据库的外键约束和验证来实现这一点?或者我是否必须将我的验证逻辑移动到应用程序层?或者,是否有另一种设计可以让我避免这个问题?
ruby-on-rails - Ruby:Declarative_authorization 多态关联
我有两个模型(项目和主题)。它们都由具有 has_many 关联的第三个模型用户拥有(用户有许多主题和项目)。项目和主题都有_many :images。
Image 模型是一个多态关联,因此该表具有 imageable_id 和 imageable_type 列。如果我有一个 ID 为 1 的项目和一个 ID 为 1 的主题,则表格看起来像
我正在使用 declarative_authorization 重写我的数据库的 SQL 查询,以防止用户访问他们帐户之外的项目。我想编写一个授权规则,允许用户只有在他们可以读取他们拥有的项目时才能读取图像。我似乎无法获得正确的语法(也许不支持):
然后我会有另一个模仿上述规则的规则,但对于主题:
有任何想法吗?提前致谢!
- 科里斯·马林
ruby-on-rails - 多态关联在这里合适吗?
这就是我的想法:
我很确定这是完全错误的。我正在尝试做的似乎与我所看到的多态关联的相反。例如,来自 Rails 指南:
这里“拥有”模型(产品或员工)可以是许多类之一。我想让“拥有”模型成为许多类之一,所有这些类都从另一个类继承基本行为。此外,所有这些子类的行为都大相径庭,以至于 STI 效率极低。我在这里很迷茫......我很感激你能提供的任何帮助!
编辑:只是为了澄清我想要做什么......我有一个名为 Widget 的“拥有”类。小部件代表类似于非常简单的网络应用程序的东西。每个小部件都可以通过几种不同布局中的一种来表示。因此,我定义了这些不同的布局类。布局在外观和行为上可能有很大差异,但它们确实具有一些共同的功能。因此,我想将这种常见行为提取到它们可以继承的 WidgetLayout 类中。最后,任何 Widget 都可以与一个“特定”布局相关联(无论是 Informational、OneWayCommunication 等)。我只是不确定应该如何构建此设置。
编辑(最后一个,我希望!):啊,再看你的例子,我明白了。我唯一缺少的是让布局继承常见行为。那么,这样的事情会起作用吗?
ruby-on-rails - Rails,我认为多态关联被高估、限制和不必要是错误的吗?
好的,所以我一直在玩弄关于 STI 和多态关联的 Rails 3 应用程序的不同组织方式。我试图找到一种既易于编码又易于使用的方法,并且最有可能与未来的任何更改兼容。在大量阅读了很多可选的(通常是缺乏且写得不好的)文章之后,我得出了自己的一些结论。
首先,似乎使用 STI 是最安全的选择,因为它易于编码、易于阅读和使用,并且易于处理未来的任何更改而无需过多重写。我能看到的唯一合法的缺点是,在您的数据库中,数据中会有“漏洞”。有些人认为这是一件坏事。但是,恕我直言,如果这是唯一的缺点,并且结果是让你的余生变得更轻松,那么谁在乎?
其次,多态关联似乎真的只在某些情况下才能很好地工作,绝对不是所有情况。此外,似乎在任何可以使用多态关联的情况下,您也可以只使用 STI(而不是相反)。那么,为什么还要为多态关联而烦恼呢?只是为了从您的数据库中清除那些讨厌的“漏洞”?但是随后您添加了看起来非常相似的重复字段和额外表,更不用说多组控制器、模型和视图等。
第三,即使您确实确定了使用多态关联的适当时间并正确实施它,事情可能会发生变化,您会发现自己不得不撕掉多态的东西并最终实现 STI。我没有看到反过来发生这种情况的时候。STI 似乎适用于任何设置,而多态关联似乎需要“恰到好处”才能像宣传的那样工作。
现在,我不是最聪明的人,所以这些可能是错误的和/或短视的观察 - 如果您认为我错了,请告诉我,并尝试提供一些好的证据来支持您的案例!
ruby - 加入模型 + STI + 多态关联 - ActiveRecord 不能这样做吗?
问题在底部,但代码描述了大部分内容:)
下面是代码的基础,缩短到它的核心:
这就是您使用它时会发生的情况:
我的问题是,当我从与之关联的子类中创建连接模型时,我如何做到这一点subgroup.images << image
,它会说,parent_type: "SubGroup"
而不是Group
?我一直无法弄清楚这一点。
更新
如果我在 ActiveRecord 核心中更改这一行,它会完美运行:
...这是一个错误吗?
ruby-on-rails - Rails:根据多态关联的时间戳查询以获取最近的项目
我对评论有通常的多态关联:
我希望能够根据评论上的 created_at 时间戳定义 Book.recently_commented 和 Article.recently_commented。现在我正在查看一个非常丑陋的 find_by_SQL 查询来使用嵌套选择来执行此操作。似乎必须有更好的方法在 Rails 中完成,而无需求助于 SQL。
有任何想法吗?谢谢。
对于它的价值,这里是 SQL:
ruby-on-rails - 在 Rails 中为多态关联创建表单
我有几个班级,每个班级都有评论:
如何为新的电影评论创建表单?我添加了
到我的routes.rb,并尝试了new_movie_comment_path(@movie),但这给了我一个包含commentable_id和commentable_type的表单[我想自动填充,而不是由用户直接输入]。我也尝试自己创建表单:
(其中“文本”是评论表中的一个字段)但这也不起作用。
我实际上根本不确定如何将评论与电影相关联。例如,
似乎没有创建与 id 为 1 的电影关联的评论。(Movie.find(1).comments 返回一个空数组。)
ruby-on-rails - 渴望加载多态has_many:通过ActiveRecord中的关联?
您如何has_many :through
在 Rails/ActiveRecord 中急切加载多态关联?
这是基本设置:
假设我们要解决 Rails 2.3.x 和连接模型上的双多态关联的这个急切加载问题,你如何在这样的:through
事情上急切加载关联:
这不起作用,有什么想法吗?
ruby-on-rails - 带有注释的多态关联 - Ruby on Rails
我在让这些多态关联完全工作时遇到了一些麻烦。我遵循了本教程www.railscasts.com/episodes/154-polymorphic-association,但这似乎只有在我发布新帖子时是路径 /controller/ID#/comments 时才有效。如果我尝试在 /controller/ID# 上呈现部分评论表单,我会在创建评论时收到此错误:
我有三个模型:
这是我对 /articles/#{ID} 的看法
这是我的部分评论:
这是我在评论控制器中的创建方法:
我想我了解问题所在,但不确定如何解决问题。此表单正在寻找@commentable,但如果路径未嵌套,则无法找到@commentable(可能是错误的)。
这是我的路线:
ruby-on-rails - Rails 3 - polymorphic_path - 如何在给定表的情况下创建一个
我有表 AuditLog 字段包括:audited_id | 审核类型
这会产生如下数据:108 | 照片 303 | 评论
我想要做的是创建一个指向该项目的链接,因此对于上面的示例:
这是照片
我正在尝试使用多态路径,但出现错误:“Fixnum:Class 的未定义方法 `model_name'”
使用时:
想法?谢谢
根据下面 Luke 的回答更新代码:
在被传递的局部故事项目中:
数据库迁移文件,包含 CreateNewsFeeds 的以下行