0

私はユーザーを持っています:

has_many :user_artists
has_many :artists, :through => :user_artists

ユーザーアーティスト:

belongs_to :artist
belongs_to :user
delegate :itunes_id, :to => :artist

アーティスト

has_many :user_artists
has_many :users, :through => :user_artists
attr_accessible :itunes_id

そのアーティストの特定の itunes_id に基づいて、特定のユーザーの user_artists を破棄したいと考えています。できますUser.first.user_artists.select {|ua| ua.itunes_id == 200823564}が、ActiveRecord だけで行う方法はありますか? それともこれが最も効率的な方法ですか?

私は次のようなことを考えてUser.first.user_artists.where( :artist => {:itunes_id => 1000}).destroy_allいましたが、SQL は user_artists に artist.itunes_id 列がないと文句を言います。

4

1 に答える 1

1

どうですか

User.first.user_artists.join(:artist).where('artist.itunes_id = ?', 1000).destroy_all 
于 2012-11-18T19:52:50.083 に答える