gpt4 book ai didi

ruby-on-rails - 在rails中使用first_or_create更新值

转载 作者:行者123 更新时间:2023-12-04 06:22:20 25 4
gpt4 key购买 nike

我有一个表“Likes”,其中包含 Business_id、user_id 和 Like(0,1) 列以及函数“change_like_status”。

现在,在每个函数调用中,如果值为 1,则将其设置为 0(反之亦然),如果记录不存在,则创建一个值为 1 的记录。

first_or_create 方法工作得很好,但是在使用此方法时如何切换“喜欢”列的值?

这是我的功能:

def change_like_status
if current_user.present?
status = Like.where("business_id = ? AND user_id = ?",params['id'],current_user.id).first_or_create(:business_id => params['id'],:user_id => current_user.id,:liked => '1')
abort status.inspect
else
return render :json => {:status => false,:msg=>"You need to sign in before performing this action."}
end
end

最佳答案

在您的 Controller 中进行更改

def change_like_status
if current_user
status = Like.create_or_change_status(params[:id], current_user.id)
else
return render json: { status: false, msg: "You need to sign in before performing this action." }
end

结束

在模型 like.rb 文件中,添加一个方法

def self.create_or_change_status(business_id, user_id)
status = where(business_id: business_id, user_id: user_id).first
if status.nil?
status = create({business_id: business_id, user_id: user_id, liked: 1})
else
status.update_attributes(liked: !status.liked)
end
status
end

关于ruby-on-rails - 在rails中使用first_or_create更新值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32310062/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com