在连接模型中验证 ID 是一种好习惯吗?
Posted
技术标签:
【中文标题】在连接模型中验证 ID 是一种好习惯吗?【英文标题】:Is it good practice to validate IDs in a join model? 【发布时间】:2017-02-13 22:55:50 【问题描述】:我的 Artist
和 Group
模型之间设置了 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 是一种好习惯吗?的主要内容,如果未能解决你的问题,请参考以下文章