ruby-on-rails - 用户属于 Rails 中的另一个用户
问题描述
我正在尝试确定在 Rails 中使用的适当关系。我将拥有可以属于另一个用户(他们的配偶)的用户。它们都是相同的模型类型(用户)。
我希望能够在任一用户上调用 User.spouse 并获取与他们关联的用户,并利用能够为彼此构建嵌套属性的优势。我可以在模型中添加一个标签来指定对 .spouse 的调用应该返回这个用户吗?还是只是user.user?
解决方案
在您的user.rb
模型中,您可以进行如下关联:
class AdminUser < ApplicationRecord
has_one :spouse, through: :user, foriegn_key: :spouse_id
这是假设您的用户表中有一个字段,称为配偶 ID,它是用户的外键。(见下文)
更多信息可以在这里找到:Rails has_one :through association
当您通过迁移添加您的spouse_id
(或者spouse_user_id
可能是一个更好的名称)时,不要忘记添加外键以在数据库级别强制执行合法数据。
add_column :users, :spouse_user_id, :integer
add_foreign_key :users, :users, column: 'spouse_user_id'
示例用法:
用户 ID:1,姓名:'Fred',save_user_id:2
用户 id:2,姓名:'Wilma',save_user_id:1
User.find(1).spouse
=> Wilma
User.find(2).spouse
=> Fred
推荐阅读
- python - 计算点Python的突然变化
- python - 尝试在 np.sum 中使用复数时,为什么会收到消息“TypeError:'complex' object is not subscriptable”?
- next.js - 如何在生产环境中重建 NextJS 项目
- arrays - 谷歌表格查询功能
- c++ - 有什么理由使用 std::thread 而不是 std::jthread?
- python - 将类对象动态分配给函数
- c# - 创建一个方法的DeclaringType实例:Activator.CreateInstance
- stored-procedures - 从 Informatica 映射调用 Snowflake 存储过程是否有任何先决条件?
- java - 我想通过邮递员获取令牌 Oauth2
- reactjs - 创建使用 nginx 和 oauth 服务的反应应用程序给我刷新页面问题