多对多关系别名

Many to many relationship alias

我有一个用户模型和一个任务模型。

任务:

class Task < Sequel::Model
  include ActiveModel::Serialization
  many_to_one :subject, polymorphic: true
  many_to_one :creator, key: :created_by, class: :User

  def_dataset_method(:sort_recent) do
    order(Sequel.desc(:created_at), Sequel.desc(:id))
  end

end

用户:

class User < Sequel::Model
  include ActiveModel::Serialization

  one_to_many :task
end

现在我希望用户能够创建任务并将其分配给多个其他用户,但我很困惑最好的方法是什么(我想是通过加入 table),如果我是否需要其他模型。

您很可能想要一个关联 table,例如 task_users,其中包含列 user_idtask_id。这允许 Task 有一个 has_many :assignees, through: :task_users 关联。 User的反向关联也可以实现。

https://guides.rubyonrails.org/association_basics.html#the-has-many-through-association

In Sequel many_to_many 在没有模型的情况下创建 many to many associations(当然有连接 table)。这相当于 ActiveRecord 中的 has_and_belongs_to_many

DB.create_table :assignments do
  primary_key :id
  foreign_key(:user_id)
  foreign_key(:task_id)
end

class Task
  many_to_many :assigned_users, 
    class: :User, 
    join_table: :assignments,
    right_key: :user_id # this might not be needed
end

class User
  many_to_many :assigned_tasks, 
    class: :Task,
    join_table: :assignments,
    right_key: :task_id
end