0

私は次のモデルを持っています。

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    
4

2 に答える 2

1

関連付けに一意の制約を追加できます。

has_many :apps, through: :subscriptions, uniq: true
于 2013-01-23T19:12:11.097 に答える
0

サブスクリプション テーブルのデータベースに一意のインデックスを追加しました。

add_index :subscriptions, [:user_id, :app_id], unique: true
于 2013-01-24T17:44:09.887 に答える