【发布时间】:2016-12-02 21:41:04
【问题描述】:
我需要一些关于我的用户模型的建议。我遇到了 STI 设计并使用 devise 实现了它。这是基本设置:
class Message < ActiveRecord
has_one :sender
has_one :recipient
# Devise user
class User < ActiveRecord
class Sender < User
belongs_to :message
class Recipient < User
belongs_to :message
我的难题是同一个用户在不同的场景中既可以是发件人也可以是收件人。我最初设置了这个域模型,使得消息记录具有 sender_id 和 recipient_id 两者都只是 user_id 没有定义任何 Railsy 关系或设计额外的东西。
我以前的解决方案似乎更灵活,但 STI 设计似乎更优雅,如果可能的话,我想让它工作。据我了解,约定是 type 字段识别返回的用户。是否有使用 STI 的通用解决方案?
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-4 devise sti