【问题标题】:Delete only join record between tables in Rails 4在 Rails 4 中只删除表之间的连接记录
【发布时间】:2017-08-20 19:16:19
【问题描述】:

我有 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

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-13
        • 2023-03-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多