问题标签 [sti]
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 - 设计 STI 与 MTI 与单独的表格
我有一个使用设计进行身份验证的 rails 3.1 项目。
我有几种用户类型,每一种都在数据库中使用非常不同的字段。我对每个模型都有不同的模型,但是模型之间有足够的重叠功能,例如消息传递,因此拥有一个模型是有意义的。在处理不同类型用户之间的消息传递时,这尤其是一个问题。
我应该将它们全部保留为单独的表还是将它们移动到单个表中?考虑到我们将一直在查找用户这一事实,多表继承确实没有多大意义。加入明智的做法简直太昂贵了。
将每个用户类型的所有未使用列都放在表中,感觉真的很脏。
想法?
ruby-on-rails - 帖子模型和控制器架构
我正在尝试开发一个简单的网站,让用户可以添加帖子并在一个聚合流中查看它们。
问题是我有两种“类型”的帖子,“消息”帖子和“链接”帖子。
所有帖子都必须有消息,并且帖子可以有链接。
如果帖子有链接,它必须是唯一的,因此您不能添加带有已经提交的链接的帖子(由您或其他用户)。
因此,如果用户使用提供的链接 URL 添加帖子,我需要对链接进行验证,例如:
- 这是一个链接吗?
- 这个链接是新的(不在数据库中)?
- 这是一个有效的链接(就像域存在并且服务器响应足够(400,301,...)
现在,对于所有看起来像这样的帖子(有链接和没有链接),我只使用一个模型:
我看到的问题是我无法将模型验证应用于链接(无法检查唯一性或格式),因为它可以为 NULL,所以我在 post_controller 中应用所有验证,如下所示:
如何以正确的方式做到这一点?我收到了使用 STI 的建议,但我真的不知道如何以正确的方式进行操作以及如何应用验证。如果您知道有关使用 STI 和验证的良好资源,请给我一个链接。
ruby-on-rails - 使用 STI 的 Rails 应用程序——提取这些记录的最简单方法?
我正在学习如何使用 Rails,并且正在开发一个示例应用程序来跟踪啤酒配方。
我有一个名为 Recipe 的模型,其中包含配方名称和效率。
我有一个使用 STI 的名为 Ingredient 的模型——它被细分为 Malt、Hop 和 Yeast。
最后,为了链接食谱和配料,我使用了一个名为 rec_items 的连接表,其中包含食谱 ID、配料 ID 和特定于该食谱/配料组合的信息,例如数量和煮沸时间。
一切似乎都运行良好 - 我可以使用 Malt.all 找到我所有的麦芽,使用 Ingredient.all 找到所有成分。我可以使用@recipe.ingredients 等找到食谱的成分...
但是,我现在正在处理我的食谱的显示视图,并且对完成以下操作的最佳方法感到困惑:
我想显示配方名称和相关信息,然后列出成分,但按成分类型分隔。所以,如果我有一个黑色 IPA @ 85% 的效率,它有 5 种麦芽和 3 种啤酒花品种,输出将类似于:
现在,我可以拉出@recipe.rec_items 并遍历它们,测试每个rec_item.ingredient 的type == "Malt",然后对啤酒花做同样的事情,但这似乎不是Rails-y,也不是很有效率。那么最好的方法是什么?我可以使用@recipe.ingredients.all 提取所有成分,但不能使用@recipe.malts.all 或@recipe.hops.all 提取这些类型。
我应该使用不同的语法吗?我应该使用@recipe.ingredient.find_by_type("Malt") 吗?在控制器中执行此操作并将集合传递给视图,还是在视图中正确执行?我是否还需要在我的 Hop 和 Malt 模型中指定 has_many 关系?
我可以使用条件语句或 find_by_type 让它按照我想要的方式工作,但我的重点是用尽可能少的 DB 开销来执行这种“Rails 方式”。
谢谢您的帮助!
当前的基本代码:
食谱.rb
成分.rb
麦芽糖.rb
Hop.rb
RecItem.rb
recipes_controller.rb
更新添加
我现在无法访问连接表属性,所以我发布了一个新问题:
Rails - 使用 group_by 和 has_many :through 并尝试访问连接表属性
如果有人可以提供帮助,我将不胜感激!!
ruby-on-rails-3.1 - 活动管理员和 STI 模型错误:找不到表“类别”
更新#1:解决了!不知何故,Pow 没有重新启动它的进程,所以在更新后它正在加载旧的配置文件。它正在加载错误的语言环境文件。
我删除了我最近安装的 gem(仅来自 Gemfile)并重新启动了 Pow。然后我将宝石一一添加回 Gemfile。以及 ActiveAdmin 和 Rails 本地化开始正常工作。
原始问题:
我正在尝试设置 ActiveAdmin 以支持我的分类法。我的设置如下:
所以现在我在 ActiveAdmin 中添加了以下内容:
它返回对开错误:
我的迁移肯定已经运行了。我在taxonomies
表中有一些有效的 STI 记录。那么有什么问题呢?
ruby-on-rails - 设计和 STI 如何在注册时作为基类登录
我已经看过类似的帖子,但无法完全得到我需要的答案。
我有一个用户模型并使用 STI 一个学生模型,它是一种用户。
当我创建一个新学生时,Devise 使用 student_session 登录该学生。问题是我的应用程序的其余部分使用了 user_session。那么,我应该使用 student_session 创建一个新的 user_session 吗?然后注销学生?
或者有没有办法让设计允许学生创建,但作为用户基础模型登录?
谢谢你,安东尼
polymorphism - 在 mongoid 中使用多态性时是否可以使用单表继承 (STI)?
在 ActiveRecord 中使用 STI 和多态性时,需要执行以下操作以确保
将正常工作:
有没有人在 Mongoid 上成功使用过 STI 和多态性?
activerecord - ActiveRecord STI:如何突破父类的默认范围
在 Rails 3.1 RC6 上,给定
以下不按预期工作:
生成的 SQL 语句如下所示:
如何完全覆盖父类的默认范围?
我还尝试了以下这些都不起作用:
ruby-on-rails - 元搜索 has_many,其中 all/none 必须匹配
我试图进行元搜索,或者一个范围,它给我所有没有任何has_many-association等于type ==“Something”的对象。
例子:
通过自定义范围轻松搜索具有发票的订单:
或元搜索:
现在我该如何做相反的事情,找到没有发票的订单?(OrderAcknowledgements 应该总是被允许的)
ruby-on-rails - Rails 问题:belongs_to 与 STI——我该如何正确地做到这一点?
我一直在玩弄 STI 和 belongs_to / has_many 关系,我有点困惑。
基于类似于以下的模型配置,我有几个问题:
- 应该
Baby
属于什么? - 在迁移方面,我应该为
babies
表上的外键命名/添加什么? - 我很难研究这个,是否有明确的来源可以解释这一点?API 文档似乎没有击中它,或者我错过了它(这是完全可能的)。
我的第一个想法是添加一个parental_id
类似babies
的方法Baby#owner
,执行以下操作:
- 击中self.parental
- 确定父母的类型
- 返回正确的父母类型(可能是母亲,也可能是父亲)
谢谢!
ruby-on-rails - Rails 2.3 STI 返回所有子类
我正在使用标准 STI,并希望在其选项都是父类的子类型的表单上创建一个输入选择。所以我希望 Parent.select_options 返回 ['Child1','Child2','Child3']
视图.html.haml
更新
感谢@nash 和@jdeseno 只需要使用@jdeseno 方法添加以下初始化程序: