1

Je 3 modèles Rails comme:joindre seul enregistrement entre les tables dans Rails 4

class User < ActiveRecord::Base 
    has_and_belongs_to_many :char_factors 
end 

class CharFactor < ActiveRecord::Base 
    has_and_belongs_to_many :users 
end 

class UserCharFact < ActiveRecord::Base 
    belongs_to :user 
    belongs_to :char_factor 
end 

Dans les modèles User et CharFactor ci-dessus sont reliés par le modèle UserCharFact.

Je crée de nouvelles relations que:

def create 
    @user_character = UserCharFact.create({:user_id => @user.id, :char_factor_id => factor_id.id}) 
end 

Et ci-dessus semble fonctionner correctement. Mais je ne peux pas trouver un moyen de supprimer un join relation entre 2 tables. J'ai essayé les éléments suivants:

def destroy 
    @user_character = CharFactor.find(params[:id]) 
    @user.char_factors.delete(@user_character) 
end 

Mais il supprime en fait la valeur de CharFactor table plutôt que de simplement supprimer l'association

Répondre

1

UserCharFact.where(char_factor_id: params[:id], user_id: @user.id).destroy_all

1

Vous supprimez tout comme vous supprimez tous les autres dossiers du modèle.

user_char_factor = UserCharFactor.find_by(user_id: user_id, char_factor_id: char_factor_id) 
user_char_factor.destroy if user_char_factor