【问题标题】:How to create Post model with 2 model User/Admin rails?如何使用 2 个模型用户/管理员导轨创建 Post 模型?
【发布时间】:2017-12-16 21:17:04
【问题描述】:

我有 2 个模型(不是 STI)UserAdmin。现在我想用User and Admin 创建博客文章(Post 模型)。这是不可能的吗?或者有什么解决办法吗?

我尝试了一些解决方案:

  • 创建 UserAdminUser(STI 模型)(但我想要 2 个模型用户/管理员)

  • 用(user_id, admin_id) 创建Post(空值好像浪费内存)

  • 创建PostAdminPost(STI模型)(但我认为很难管理)

谁有这个问题的经验或建议?不胜感激。

【问题讨论】:

  • “使用(user_id, admin_id)创建帖子(它似乎为空值浪费内存)”。这可能是最直接的答案。您真的担心数据库中的null 值吗?为什么这是一个重大问题?
  • 是的,我想如果我有 10,000 个 Post with (user_id: 1, admin_id: null) ,我会占用很多不必要的内存。那正确吗? @jvillian
  • 希望一些专家参与进来。但是,我认为(基于一些快速研究)10,000 行对内存和存储的影响可以忽略不计。如果这是您认为可能最终遇到的问题,那么我建议(1)在尝试解决可能不存在的问题之前进行更多研究,未来的问题,或者 (2) 着手解决你目前遇到的一些实际问题。

标签: ruby-on-rails ruby activerecord


【解决方案1】:

也许多态模型会很好?

帖子可能属于将其与其他模型(在本例中为用户和管理员)相关联的关联。也许叫它postable - 或者更好的名字。

class Post < ApplicationRecord
 belongs_to :postable, polymorphic: true
end

class User < ApplicationRecord
 has_many :posts, as: :postable
end

class Admin < ApplicationRecord
 has_many :posts, as: :postable
end

您可以查看here 了解更多信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-13
    • 1970-01-01
    • 2012-03-24
    • 2013-05-01
    相关资源
    最近更新 更多