【问题标题】:Multiple users to a task in Ruby on Rails多个用户在 Ruby on Rails 中执行一项任务
【发布时间】:2018-06-10 13:40:49
【问题描述】:

我正在使用 Ruby on Rails 制作一个项目管理器应用程序,并且我有许多“任务”(例如 GitHub 上的问题),可以分配给许多“用户”。例如,John Smith 和 Jane Doe 可能正在处理任务 23。有点像 GitHub 上的问题可以有多个标签,但使用用户而不是标签。

我是 Ruby on Rails 的新手,我不知道如何创建“任务”模型,以便它可以引用多个用户。我也不知道如何表达这个问题,我已经尝试用谷歌搜索它但无济于事 - 抱歉,如果这是重复的。

【问题讨论】:

    标签: ruby-on-rails database sqlite rails-activerecord


    【解决方案1】:

    听起来在您的应用中,您的用户可以有很多任务,而您的任务可以有很多用户。在这种情况下有两种选择

    1. has_and_belongs_to_many配置
    2. 将这两个模型结合在一起的完整模型

    在这两种情况下,都会有一个表将它们连接起来,但是,这取决于您是否需要两者之间的模型功能。

    我的建议是从 #1 开始,您需要阅读 associations 以实施任一选项。

    示例:

    假设您同时拥有用户模型或任务模型,您将创建 has_and_belongs_to_many (HABTM) 关系,如下所示:

    $ rails g migration CreateUsersTasksJoinTable
    

    这将生成一个名称类似于以下的迁移文件。相应地更新该文件:

    # db/migrate/201806XXXXXXXX_create_users_tasks_join_table.rb
    class CreateUsersTasksJoinTable < ActiveRecord::Migration[5.1]
      def change
        create_join_table :users, :tasks
      end
    end
    

    创建连接表后,您需要更新 UserTask 模型:

    # app/models/user.rb
    class User < ApplicationRecord
      has_and_belongs_to_many :tasks
    end
    
    # app/models/task.rb
    class Task < ApplicationRecord
      has_and_belongs_to_many :user
    end
    

    【讨论】:

    • 您是否有机会提供示例rails new model 命令(或数据库迁移文件)和/或模型文件?
    • 添加示例文件
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-31
    • 1970-01-01
    • 2012-11-06
    • 2016-01-18
    • 2016-12-05
    • 2011-02-09
    相关资源
    最近更新 更多