Ruby on rails - 如何防止用户两次订阅同一个应用程序



我有以下模型。

我不希望User可以多次订阅同一个App

所以这应该是不可能的:

User.last.apps
=> [#<App id: 78, name: "Name">, #<App id: 78, name: "Name">]

User.last.subscriptions
=> [#<Subscription id: 78, app_id: 78>, #<Subscription id: 79, app_id: 78>]

模型

User
  has_many :subscriptions, :dependent => :destroy
  has_many :apps, through: :subscriptions
Subscription
  validates :user_id, uniqueness: { scope: :app_id }
  belongs_to :user, touch: true
  belongs_to :app 
App  
  validates_uniqueness_of :name  
  belongs_to :user, touch: true
  belongs_to :app    

您可以向关联添加唯一约束:

has_many :apps, through: :subscriptions, uniq: true

我在订阅表中向数据库添加了唯一索引。

add_index :subscriptions, [:user_id, :app_id], unique: true

相关内容

  • 没有找到相关文章

最新更新