我正在尝试保存response
,如果在一个条件中不是issue
,也会保存nil
,因此我没有多个if / else条件使这个逻辑复杂化。
对于存在@response
并且issue
为nil的用例,这不会进入if块。
有没有明显的东西我没有看到或者我不能在这样的一行中写出我的逻辑?
注意:我知道应该使用一个交易,但我现在只是试图获得一个有效的原型。
if @response.save && (issue.save unless issue.nil?) # Does not get into the if block when @response exists and issue is nil
p 'in save'
format.html { redirect_to issue_path(params[:issue_id]), notice: success_message }
else
p 'not in save'
format.html { render action: 'new' }
end
这就是我现在所做的工作,我希望有一个更简单的1班轮而不是这个。
success = false
if issue.nil?
if @response.save
success = true
end
else
if @response.save && issue.save
success = true
end
end
if success
p 'in save'
format.html { redirect_to issue_path(params[:issue_id]), notice: success_message }
else
p 'not in save'
format.html { render action: 'new' }
end
答案 0 :(得分:5)
你想要执行"成功"条件时:
@response.save
成功了issue
为nil
或issue
不是nil
且已成功保存。因此,你可以这样做;
if @response.save and (issue.nil? or issue.save)
# Success
else
# Fail
end
答案 1 :(得分:3)
由于您在&&
之后使用@response.save
,如果是issue.nil?问题没有保存并返回一个零,这总是导致它给你一个零。我希望这会让你走上正轨。