ruby-on-rails - 多对多关系别名
问题描述
我有一个用户模型和一个任务模型。
任务:
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
现在我希望用户能够创建任务并将其分配给其他多个用户,但我很困惑最好的方法是什么(我猜是通过连接表)以及我是否需要另一个模型。
解决方案
在 Sequel中many_to_many
创建 了多对多的关联 ,没有模型(但当然有一个连接表)。这相当于has_and_belongs_to_many
在 ActiveRecord 中。
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
推荐阅读
- java - 更新产品数量后总价不正确
- json - 将 pandas.df 转换为这种特定的 JSON 格式
- reactjs - 在 React 中的 TypeScript 中打开和关闭对话框的状态
- rest - 在 RestAssured 中关闭连接的理想方式?
- c# - 我如何(优雅地)从内部关闭工作人员服务?
- android - 应用终止后立即处理应用内更新
- css - 如何使用 dash-bootstrap 将标题文本垂直和水平居中
- tensorflow - tf.layers.batch_normalization 中不同轴的任何用例?
- javascript - 如何通过 vscode 扩展命令激活文档?
- ios - iOS CALayer 点击识别器