ruby-on-rails - 如果存在具有相同属性的记录,则更改 Create 的行为
问题描述
我正在构建一个像 reddit 这样的应用程序,您可以在其中向特定用户页面添加提交。提交有一些属性,包括一个名为url的属性。我想在添加新提交时检查该特定页面是否已经存在具有相同 URL 的提交,如果存在,请投票支持它,而不是将其创建为新提交。如果没有,只需将其添加为新提交即可。我在这里使用act_as_votable gem。
这里是创建方法:
def create
@user = User.friendly.find(params[:user_id])
@submission = @user.submissions.new(submission_params)
@submission.member_id = current_user.id
@submission.creator_id = @user.id
@submission.is_viewed = false
@submission.get_thumb_and_title_by_url(@submission.url)
respond_to do |format|
if @submission.save
format.html { redirect_to @user, notice: 'Submission was
successfully created.' }
format.json { render :show, status: :created, location: @submission }
else
format.html { render :new }
format.json { render json: @user.errors, status: :unprocessable_entity }
end
end
end
解决方案
你应该看看https://apidock.com/rails/v4.0.2/ActiveRecord/Relation/find_or_create_by和https://apidock.com/rails/v4.0.2/ActiveRecord/Relation/find_or_initialize_by
现在在您的代码上,我们可以进行更改,例如
def create
@user = User.friendly.find(params[:user_id])
@submission = @user.submissions.find_or_initialize_by(submission_params)
if @submission.id.present?
# What to do if the record exists
else
# if its a new record
@submission.member_id = current_user.id
@submission.creator_id = @user.id
@submission.is_viewed = false
@submission.get_thumb_and_title_by_url(@submission.url)
end
respond_to do |format|
if @submission.save
format.html { redirect_to @user, notice: 'Submission was
successfully created.' }
format.json { render :show, status: :created, location: @submission }
else
format.html { render :new }
format.json { render json: @user.errors, status: :unprocessable_entity }
end
end
end
我希望这能让你走上正轨
快乐编码
推荐阅读
- firebase - 在 Flutter 中使用 Firebase 身份验证检查用户是否是新用户
- c# - SMTP:邮箱不可用。服务器响应是:Error458 块
- javascript - 我们如何在 ES7 中调用类内部的方法?
- windows - SSL 和 Umbraco
- google-tag-manager - 我正在使用自定义图像标签在我的网站上放置一个“图像像素标签”。我希望标签在页面顶部触发
- python - Python 3 urllib + PySocks - 使用 SOCKS4 代理打开 url 失败
- swift - 使用 enumerateBodies 沿RayStart 反弹光线
- android - Google Play 开发者 API | 检索评论
- asp.net - DotNet HighCharts 在 Web 表单中导出 Asp.net
- python - Python、QT 和 pyQt 图形用户界面