更新HABTM模型关联只会删除关联

艾米

创建新的HABTM关联对我来说很好,但是每次我尝试更新它们时,所有关联都会被删除。

这就是我的更新操作的样子。

def update
    params[:dish][:cuisine_ids] ||= []
    params[:dish][:diet_ids] ||= []

    @user = current_user
    @dish = @user.dishes_selling.find_by(:id => params[:id])

    @dish.cuisines = Cuisine.where(:id => params[:dish][:cuisine_ids]) ### (1) ###
    @dish.diets = Diet.where(:id => params[:dish][:diet_ids]) ### (1) ###

    if @dish
        respond_to do |format|
          if @dish.update(dish_params) ### (2) ###
            format.html { redirect_to dish_path(@dish), notice: 'Dish was edited.' }
          else
            format.html { render action: 'edit' }
          end
        end
    else
        flash[:error] = "You can only edit your dish!"
        render :index
    end
end

我的菜参数看起来像这样

    def dish_params
      params.require(:dish).permit(:title, :desc, cuisine_ids: [:id], diet_ids: [:id])
    end

如果在编辑状态下,我单击“烹饪”的两个复选框,则在步骤(2)上的日志将读取此内容(仅注释Delete且无更新或为cuisine_dishes插入

(0.1ms)  begin transaction
  SQL (0.4ms)  DELETE FROM "cuisines_dishes" WHERE "cuisines_dishes"."dish_id" = ? AND "cuisines_dishes"."cuisine_id" IN (7, 9)  [["dish_id", 61]]
  SQL (0.2ms)  UPDATE "dishes" SET "desc" = ?, "updated_at" = ? WHERE "dishes"."id" = 61  [["desc", "yema1245"], ["updated_at", "2014-06-12 06:57:36.622811"]]
   (5.5ms)  commit transaction
Redirected to http://localhost:3000/dishes/61
Completed 302 Found in 48ms (ActiveRecord: 13.7ms) 

问题:为什么更新的HABTM关联为什么要尝试删除该关联,而不是尝试创建不存在的关联,而尝试创建新的关联(如果不存在则删除)。

海德

您应该尝试使用<<运算符而不是=;

@dish.cuisines << Cuisine.where(:id => params[:dish][:cuisine_ids]).last

这应该在两个表中都添加而不是替换所需的ID。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

更新HABTM模型关联只会删除关联

来自分类Dev

CakePHP HABTM仅查找关联的模型数据

来自分类Dev

Rails HABTM-正确删除关联

来自分类Dev

使用ajax和rails删除和更新关联模型的对象

来自分类Dev

Rails 5 HABTM关联

来自分类Dev

CakePHP显示HABTM关联

来自分类Dev

HABTM关联表格

来自分类Dev

Rails中的HABTM关联:收集并计算模型子级的类别

来自分类Dev

关联关联更新

来自分类Dev

Sailsjs:在模型更新后如何填充关联?

来自分类Dev

使用Sequelize更新关联模型中的属性

来自分类Dev

根据关联记录值更新模型

来自分类Dev

Sailsjs:在模型更新后如何填充关联?

来自分类Dev

使用Sequelize更新关联模型中的属性

来自分类Dev

通过模型关联更新rails属性

来自分类Dev

Sequelize 模型关联更新未按预期反映

来自分类Dev

HABTM关联未保存-CakePHP

来自分类Dev

cakephp查找关联模型的关联模型

来自分类Dev

通过对关联而不是对象的 created_at 对 HABTM 关联进行排序

来自分类Dev

如何在Rails 4中干净地更新HABTM关联列表?

来自分类Dev

使用工厂女孩创建HABTM关联

来自分类Dev

HABTM关联:不允许的参数

来自分类Dev

Rails HABTM关联与重命名的类

来自分类Dev

ActiveRecord生成错误的关联HABTM名称

来自分类Dev

两个级别的HABTM关联

来自分类Dev

无法编辑与 CakePHP 的 HABTM 关联中的属性

来自分类Dev

Rails:关联删除具有非标准名称的模型

来自分类Dev

如何关联模型?

来自分类Dev

模型的关联数组