问题标签 [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.
ruby-on-rails - Rails - 简洁地找到多态嵌套资源的父资源
假设我有一个像这样的多态结构。
那是相当丑陋的。每当我们添加一个它可能属于的新事物时,我们都需要将它 un-DRYly 添加到 before_filter 中。
它也变得更糟。假设 Foos真的是多态的东西,可以出现在任何地方,比如评论或标签。并假设您有以下路线:
...现在我们必须担心是先检查 bar_id 还是 baz_id。
对于更复杂的资源,这甚至可能不足以确保您获得父母的 ID。
如果我们可以做这样的事情,那将是理想的:
毕竟,我们的路由已经根据 URL 中参数的顺序对父级进行了编码。为什么要丢弃这些信息?
那么:如何做到这一点?
ruby-on-rails - RESTfully 破坏 Rails 中的多态关联?
如何销毁关联本身并让对象单独关联,同时保持这个 RESTful?
具体来说,我有这些模型:
这就是说事件是:surveyable
(ModelSurvey belongs_to Event
)。我的问题是,无需创建ModelSurveysController
,我如何销毁,而单独ModelSurvey
留下Event
and ?Survey
有什么 map.resources :events, :has_many => :model_surveys
?我不太确定在这种情况下该怎么做。路由需要做什么,控制器需要做什么?我希望网址看起来像这样:
/events/:title/model_surveys/:id
谢谢你的帮助,兰斯
ruby-on-rails - 具有多态关联的验证表单
class User < ActiveRecord::Base has_one :core, :as => :resource validates_presence_of :name end
为了插入一个新用户,我使用这样的表单:
当我在不插入电子邮件和姓名的情况下提交此表单时,rails 仅向我显示用户的错误。我也想在同一个列表中出现核心错误我该怎么办?
谢谢
ruby-on-rails - Rails 中的继承和多态关联
我有一个用户模型,它属于Profile(belongs_to 多态)。一个模型有两个子类,但User中的profile_type始终对应于父模型。
然后:
即使在子类中声明关联,profile_type仍然是SomeProf。
为什么会这样?有什么方法 profile_type 匹配子类而不是父类?
ruby-on-rails - 多态 has_many 通过控制器:反模式?
我很想说是的。
一个人为的例子,使用 has_many :through 和 polymorphs:
暂且不谈健身房是否是俱乐部的问题,或任何其他设计缺陷。
要将用户添加到俱乐部,很容易使用 RESTful 并将 person_id 和 club_id 发布到 MembersController,如下所示:
在这种情况下,当我们决定这样做时:
我们需要让 MembersController 决定父资源是 Club 还是 Gym,并采取相应的行动。一种非 DRY 解决方案:
如果你不止一次这样做,那就太可怕了。
此外,它基于加入俱乐部和加入健身房的概念大致相同。或者至少,Gym#add_member 和 Club#add_member 将以或多或少平行的方式运行。但我们必须假设健身房和俱乐部可能有不同的理由拒绝会员申请。MembersController 需要处理两个或多个错误状态的 flash 消息和重定向。
野外有解决方案。James Golick 很棒的 ResourceController 有一种处理 parent_type、parent_object 等的方法。Revolution On Rails 有一个很好的解决方案,可以通过向 ApplicationController 添加一些方法来干掉多个多态控制器。当然,ActionController 有 #polymorhpic_url 用于更简单的情况,例如 Blog#posts 和 Article#posts 等。
所有这一切让我想知道,是否真的值得将所有压力都施加在 MembersController 上?多态在 Rails 中处理得很好,但我的感觉是使用条件(if/unless/case)清楚地表明你不知道你正在处理什么类型。元编程会有所帮助,但前提是类型具有相似的行为。两者似乎都表明需要进行设计审查。
我很想听听你对此的看法。在这种情况下最好是干,还是确切地知道你有什么父类型?我在这里神经质吗?
ruby-on-rails - 回形针多态关联与保存
我将我的 photo.rb 模型更改为多态并且可用于需要保存图像的各种其他模型,并且它工作正常,除了我无法弄清楚如何通过父模型正确保存新附件。有任何想法吗?我是否必须以不同的方式处理这个问题?因为,它也没有得到 imageable_type ......我必须添加。
我看到了看起来像野兽并使用另一个表的多态回形针插件?所以我希望有更好的解决方法。
我越来越:
松饼.rb
照片.rb
ruby-on-rails - 在 Rails 中通过多态类型查找所有内容?
有没有办法在 Rails 中找到特定多态类型的所有多态模型?因此,如果我的 Group、Event 和 Project 都带有如下声明:
has_many :assignments, :as => :assignable
我可以做类似的事情:
Assignable.all
...或者
BuiltInRailsPolymorphicHelper.all("assignable")
那样就好了。
编辑:
...这样Assignable.all
返回[Event, Group, Product]
(类数组)
sql - SQL 条件/案例连接/多态关联?
我正在尝试实现类似于 Ruby on Rails 的多态关系的东西。我有以下三个表:
活动用户组织
事件可以由用户或组织拥有,因此我的事件表包括以下列:owner_type 和 owner_id。
我可以通过内部连接和 where 子句轻松列出属于用户或组织的所有事件,但是,有没有办法根据 owner_type 列的值使连接表有条件,从而允许将所有事件一起列出,无论所有者类型如何?
我希望这是有道理的。
任何建议表示赞赏。
谢谢。
ruby-on-rails - Rails 照片、用户、评论
这让我疯狂。我有 3 个模型。用户,照片,评论。
这就是我想要做的。
一个用户有很多照片和评论
一张照片属于一个用户,有很多评论
评论属于用户和照片
所以我的模型有这些关联:
用户
照片
评论
我现在想显示一张照片并加载这张照片的所有评论,并用用户信息显示每条评论。
所以在照片控制器显示我有的动作
在照片/显示视图中
它显示评论,例如。评论文本很好,但在部分内容中我尝试这样做:
它抛出错误“nil:NilClass 的未定义方法‘fname’”
奇怪的是,我是用户 authlogic,所以您必须登录才能发表评论。但是即使您没有登录,您也可以看到评论。当我注销时,它可以找到。当我登录时,它会引发错误。
任何帮助将不胜感激,因为它让我发疯。
顺便说一句,在我的路线中,我有
谢谢
ruby-on-rails - 在多态关系中缓存列
我有一个内容管理系统应用程序,它使用多态树表作为其排列的核心。我遇到了一个问题,一旦树变得很大,并且因为我们有很多不同的模块(大约 25 个),只做 :include => :instance 并不能减少芥末。Instance 是我们多态关系的名称。
有趣的是,在大多数情况下,当我想要这些项目的大列表时,我真正想要的只是关联表中的名称(例如,出于索引栏的目的),其余的都在中央表中。所以我想我可能应该为中央表中的名称实现某种列缓存。(就像 rails 已经做的计数器缓存一样)。
我只是想知道是否存在插件来管理这个?
如果没有,我只是要在中央表中添加一个“名称”列,因为所有多态模型都继承了一个超类,所以只需添加一个回调,在创建或更新项目时将名称推送到中央表。然后我会先进行一次大迁移来填充它?
该设计有任何缺陷吗?
我想更灵活的列可以是某种序列化缓存,如果需要,我可以稍后存储其他东西?呸!:D