【问题标题】:Foreign key depending on Boolean value外键取决于布尔值
【发布时间】:2013-06-28 04:08:04
【问题描述】:

我是学习 Ruby on Rails 和其他所有内容的新手。我想知道 Rails 是否有一种神奇的方式来实现这一点:

表 1

User table:
id, user_name, fake_id, user_fake_name

表 2

Post table:
id, fake_or_real, auth_id

fake_or_real 是一个布尔值; auth_id 是 user_id 或 user_fake_id 的外键。

如果 fake_or_real == 1,那么 auth_id = user_fake_id; auth_name = user_fake_name

如果 fake_or_real == 0,那么 auth_id = user_id; auth_name = 用户名

我使用两个 id 的原因是因为当用户在帖子中使用假名时,我想在 html 代码中隐藏 user_id。如果没有必要,请告诉我。

我应该怎么做才能获得可连接的作品,并使 post.auth_name 在这两种情况下都有效?

谢谢。

【问题讨论】:

    标签: ruby-on-rails foreign-keys foreign-key-relationship jointable


    【解决方案1】:

    据我所知,无法在 to 字段之一上使用外键(这是 db 限制*)。你能做的是

    User 有一个FakeUser,它将大部分属性委托给User(id 和名称除外) 一个Post 应该有一个多态关联,我们称它为authorable,另一边可能是UserFakeUser。瞧!

    更多关于多态关联http://guides.rubyonrails.org/association_basics.html#polymorphic-associations

    *限制在这里不是个好词,不可能实现。

    【讨论】:

    • 谢谢。多态关联看起来是一个很棒的特性。我会更深入地研究它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-27
    • 2018-08-10
    • 2023-04-07
    • 2022-01-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多