繁体   English   中英

在Rails 4中仅删除表之间的联接记录

[英]Delete only join record between tables in Rails 4

我有3种Rails模型:

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

在上面的UserCharFactor模型通过UserCharFact模型连接UserCharFact

我正在创建新的关系为:

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

以上似乎工作正常。 但是我找不到删除2个表之间的特定join relation 我尝试了以下方法:

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

但是它实际上是从CharFactor表中删除该值,而不仅仅是删除关联

删除它就像删除任何其他模型记录一样。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM