mysql - 仅删除 Rails 4 中表之间的连接记录

标签 mysql ruby-on-rails ruby ruby-on-rails-4 has-and-belongs-to-many

我有 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 模型连接。

我正在创建新的关系:

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

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

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

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

最佳答案

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

关于mysql - 仅删除 Rails 4 中表之间的连接记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45785937/

相关文章:

mysql - 当您请求数组时,Ruby 的 dbi select_all 会给出有趣的结果

ruby-on-rails - Rspec 'cannot load such file'

php - 过滤掉数组中的重复值

c++ - 使用MYSQL Server 5.5完成端到端教程C++

ruby-on-rails - Neo4j 和 Neography - 在散列/openstruct 对象中获取密码查询结果

ruby-on-rails - 跳过mongoid中关系的默认范围

php - 使用带有where条件的Mysql查询

php - MySQL 5.5 自动时间戳更新到当前

ruby-on-rails - 覆盖 rails 3 中的默认脚手架生成器

jquery - 如何将 div 高度扩展到 rails 中的 ruby​​ each-loop?