在连接模型中验证 ID 是一种好习惯吗?

Posted

技术标签:

【中文标题】在连接模型中验证 ID 是一种好习惯吗?【英文标题】:Is it good practice to validate IDs in a join model? 【发布时间】:2017-02-13 22:55:50 【问题描述】:

我的 ArtistGroup 模型之间设置了 HMT 关联:

class Artist < ApplicationRecord
  has_many :artist_groups, dependent: :destroy
  has_many :artist_groups, through: :artist_groups
end

class ArtistGroup < ApplicationRecord
  has_many :memberships, class_name: "ArtistGroupMembership", dependent: :destroy

  belongs_to :artist
  belongs_to :group

  has_and_belongs_to_many :roles

  accepts_nested_attributes_for :memberships, reject_if: :all_blank, allow_destroy: true

  validates_presence_of :artist_id, :group_id
end

class Group < ApplicationRecord
  has_many :artist_groups, dependent: :destroy
  has_many :members, through: :artist_groups, source: :artist
end

您会在我的 ArtistGroup 加入模型中注意到,它会验证以确保艺术家和团体都在场。

当关联被保存时,我是否这样做:

 artist.groups.push(Group.first)

或在我的视图中创建一个表单(无 ID 输入)ActiveRecord 足够智能以映射关联。有了这个,我什至应该在我的连接模型中验证这些 ID 吗?我注意到在处理多态关联时这变得更加痛苦。

【问题讨论】:

【参考方案1】:

Rails 5 自动要求 belongs_to :artist 引用现有的 artist,因此完全不需要额外的验证。您可以通过执行使该要求成为可选

belongs_to :artist, optional: true

【讨论】:

以上是关于在连接模型中验证 ID 是一种好习惯吗?的主要内容,如果未能解决你的问题,请参考以下文章

屏蔽 JWT 自定义声明是一种好习惯吗?

为模型创建许多 DTO 是一种好习惯吗?

登录后重新生成会话 ID 是一种好习惯吗?

使用 MongoDB 数据库为每个查询打开一个新连接是一种好习惯吗?

将谷歌令牌存储在本地存储中是不是是一种好习惯

在将项目部署到服务器之前重置所有迁移是一种好习惯吗?