私は User.rb モデルを使った Rails アプリを持っていますが、これは Practice.rb モデルと多対多の関係にあります (モデルの名前としては不適切かもしれません)。 '空手' と '柔道') をデータベースにシードしました。ユーザーが持つプラクティスの数を減らしたい状況があり (ユーザーは最大 2 つ)、2 つ目のプラクティスを削除するために、モデルの 1 つのメソッド内でこれを行います。
if user.practices.size > 1
user.practices[1].destroy
end
しかし、その結果、その練習 (たとえば、「空手」) が から削除されるだけでなく、user.practices
その練習が存在しなくなり、「空手」は誰もが利用できる練習にリストされなくなります。Practice.all
「空手」をやると出てこない。
'delete'
代わりに使用すると同じことが起こります'destroy.'
user.practices は CollectionProxy を生成します
user.practices
完全に削除せずに削除する適切な方法は何ですかPractice.all
アップデート
モデル編成はこんな感じ。理想的には、ユーザーからプラクティスを削除すると、関連する practice_listing も削除されます。
User.rb
has_many :practice_listings
has_many :practices, through: :practice_listings
Practice.rb
has_many :practice_listings
has_many :users, through: :practice_listings
PracticeListing.rb
belongs_to :practice
belongs_to :user