私は最初の Rails アプリを作成しており、JQuery を使用して ajax POST リクエストを作成し、リソースを更新しています。私は送信して_method: "PATCH"
おり、正しいコントローラーが実行されています:
def update
@buddyship = Buddyship.find(params[:id])
if @buddyship.involve? current_user && @buddyship.update(buddyship_params)
render json: { success: true }
else
render json: { success: false }, :status => 500
end
end
私は最初に標準的な使用例をテストしています。この関係には現在のユーザーが含まれているため、条件の最初の部分は と評価されtrue
ます。2番目もそうです、試したので知っています
def update
@buddyship = Buddyship.find(params[:id])
bool = @buddyship.update(buddyship_params)
logger.debug "bool: "+bool.to_s
if @buddyship.involve? current_user && bool
render json: { success: true }
else
render json: { success: false }, :status => 500
end
end
そして私が得たログでbool: true
。さらに、レコードはデータベースで更新されます。それでもどういうわけか、成功ではなく内部サーバーエラーが発生します。
and
の代わりに単純に使用すると&&
、すべてが期待どおりに機能します。
if @buddyship.involve? current_user && @buddyship.update(buddyship_params)
and
は よりも優先順位が低く&&
、代入演算子はその中間にあることを理解してい=
ます。しかし、このコンテキストでは、これは関係がないように思われます。結局のところ、オペレーターは 1 つしかありません! したがって、他のものと優先順位を競うことはありません。それはかなり簡単に思えます。何が間違っているのですか?