问题标签 [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.

0 投票
2 回答
3237 浏览

ruby-on-rails - 使用 STI 时索引在哪里?

我正在使用 Rails 和 postgres。

我有几个使用 STI 的模型,我想知道应该在表的什么位置放置索引,为什么?

例如,假设我有以下设置:

谢谢!

0 投票
1 回答
915 浏览

ruby-on-rails - 子类的不同视图

我正在使用 STI 子类,并希望针对不同的子类指向不同的视图。目前我正在将子类主题路由到主类文章,如下所示:

有没有一种简单的方法可以指向不同的视图?


编辑

我发现这样做的最好方法是:

0 投票
1 回答
415 浏览

ruby-on-rails - Rails 为用户设计多种类型——也许是 STI?

我有一个应用程序,其中有由 Devise 管理的用户。应用程序的实际用户会将人添加为“朋友”和另一种类型,我们称他们为“工人”。归根结底,“朋友”和“工人”都是,或者我希望他们都是用户类型。

问题是用户需要能够在系统中有一个人(用户),对他们来说既是“朋友”又是“工人”。还需要用户的唯一 ID 不重复,在这种情况下是手机号码。例如,如果给定用户将另一个用户添加为“朋友”,然后随后将他们添加为“工人”,则它应该只是某种关联,而不是系统中的新用户。

我知道如何在传统意义上处理这个问题,但我确信 STI 或多态关联有一些聪明的方法可以在 rails 中处理这个问题。

有什么想法吗?值得注意的是,各种用户类型都有与之关联的几乎相同的字段(或将要)——非常简单的 id、name、mobile 等。

我想诀窍是任何用户都需要能够拥有与他们相关联的“朋友”或“工人”类型中的一个或两个,并且这些类型中的每一个都应该能够具有与其他两个相关联的组合他们。

0 投票
1 回答
1090 浏览

ruby-on-rails - Rails 使用 User 模型的单表继承 (STI)

建立一个小型预订网站。有users(谁登录并使用该站点)并且guests有谁被分配到rooms. users可以是(是?)guests但不是所有guests的也是users

我最初的想法是在&之间建立belongs_to/has_one关系,但也许 STI 会在这里工作?作为用户和客人拥有,等。建立模型是否有意义,例如,都继承自?userguestfirst_namelast_nameemailuserguestperson

我将推出自己的简单身份验证,因此唯一的附加字段user可能是password_digest和。roles_maskicon_color

有什么建议么?我只是问,因为在身份验证、授权等方面可能会变得很棘手。

欣赏任何想法/提示!

0 投票
0 回答
471 浏览

ruby-on-rails - 设计 + STI + 授权

我有以下情况:

我的应用有几种类型的用户:Owner, Team Member, Collaborator,Client, 和Guest. (访客类型与此问题无关)

这些是不同模型之间的联系:

  • Owner 属于 Account
  • Account 有很多 Team Members
  • Account 有很多 Projects
  • Projects habtm (或 hmt) Collaborators
  • Project habtm (或 mht) Clients

我的身份验证和授权需要四个关键功能:

  • 能够将协作者升级为团队成员(这意味着将所有 habtm 删除到项目中,并将belongs_to 添加到帐户
  • 能够为不同的用户制定不同的设计策略(所有者有可注册的,客户没有)
  • 具有仅接受一部分用户的不同登录页面(所有者/团队成员/协作者和客户的单独登录)
  • 能够使用 Account.owner、Account.team_members、Project.collaborators 和 Project.clients 调用不同的用户子集

我已经在脑海中研究了几种解决方案,但我不确定哪种方法最适合我的情况。

  • 起初我考虑使用 Devise 进行授权和身份验证,但我认为我最好使用 CanCan 之类的东西作为授权部分。
  • 我还考虑为每种用户类型使用一个表,但这会使初始创建后更改角色变得更加困难
  • 我现在正在使用 STI 进行配音,因为 TeamMember < User、Client < User 等。但是由于客户和协作者属于项目,所有者和团队成员属于一个帐户,我不确定这是否可以轻松地与 STI 一起使用,我也没有真正找到任何关于用 STI 设计的好例子。

任何想法如何解决这种情况?

0 投票
1 回答
142 浏览

ruby-on-rails - 使用子类的“has_many”完成错误的 sql 请求

我正在尝试实现类似“facebook like”的关系。我想为此使用继承,所以这是我的结构:

带有 user_id:integer 属性的 Like |> PostsLike 继承了带有 post_id:integer 属性的 Like

所以这是我的 Like.rb 模型:

然后是我的 PostLike.rb 模型:

最后我有一个帖子模型,它将有多个 postlikes 对象:

但这是我的问题,当我进入 irc 时:

  1. 我得到一个 Post 对象:

    ruby-1.9.2-p290 :001 > @p = Post.all.first

  2. 我尝试获取此对象的 postlikes,这是 sql 语句:

    选择likes.* 从likes哪里likestype在('Postlike')和likespost_id= 310

所以基本上不是做

postlikes.post_id

Rails 的做法

喜欢.post_id

有什么想法可以解决吗?

0 投票
2 回答
6274 浏览

ruby-on-rails - 如何在 Rails 中始终使用基类并忽略 STI?

我有一个模块,我将其包含在几个具有此内容的模型中:

一切都很好,直到我开始使用 STI。该行应始终生成查询

不是

有没有一种简单的方法来避免它?

我虽然有两种解决方案。遍历类层次结构,直到我找到之前的最顶层类ActiveRecord::Base或手动运行查询,例如:

我不喜欢这两种解决方案。有更好的吗?

0 投票
2 回答
494 浏览

ruby-on-rails - 回形针没有在我继承的模型上存储文件

(我是回形针新手)

我有这个模型层次结构:

基本型号:

继承模型:

我正在使用来自 ActiveRecord 的单表继承

[部分] schema.rb:

图像描述控制器:

新视图(使用formtastic):

显示视图:

当我使用新视图(并选择要上传的文件)时,POST 正在工作,但没有保存/附加文件,“img_file_size”、“img_file_name”、“img_content_type”设置为零。

如果我尝试显示它,结果是“缺失”字段。

编辑:

如果我尝试从控制台创建 ImageDscription,它可以工作:

0 投票
0 回答
174 浏览

ruby-on-rails - Rails 活动记录的 STI 中的 Heisenbug

我有这个通用消息模型,它应该是涉及 STI 的子类,并且子类应该可以附加到不同的其他模型。

但是 AR 的 STI 魔力有点闪烁 - 在相同的要求下,它有时有效,有时无效。Rails 服务器日志显示,有时当 Payload 访问它的reservation_messages关联时,IN 查询部分仅包含三个可能的类中的一些。我应该在哪里预加载子类,以便 AR 的 STI 始终可以看到它们?

所以我有什么:

更新 1 制作了自定义初始化程序,我只需要所有 4 个消息类。看起来它现在有效。

0 投票
1 回答
367 浏览

ruby-on-rails-3 - Rails STI 路由

我有一个使用 STI 的文章模型。子类是情绪,类别,网关等......

在我的路线中,我有

这使得所有不同的子类都可以在 /articles/108、emotions/108 或 categories/108 中找到——不管你把哪个子类放在前面,它们都适用于所有文章。

我希望我所有的 url 助手生成文章/id 的链接——目前他们仍然去特定的子类。

我该怎么做呢?