1

これを行うための最良のアプローチは何ですか?

@user = UserFinder.find(first_name: "Dave")
if !@user
  return render :text => '// No user named Dave found'
end

if @user.last_name != "Edwards"
  # This is not the guy we want
  @user.destroy

  # Now we want to re-execute the search again forever until we find Dave Edwards
end

これは私が持っている実際のコードの非常に単純な例であることに注意してください。最初からクエリをフィルタリングできることはわかっていますが、この方法が必要です。

不要なユーザーに遭遇した場合は破棄する必要があるためbegin、ブロックを使用してこれを行う方法がわかりません。while

私の試み:


begin
  @user = UserFinder.find(first_name: "Dave")
  return render :text => '// No user named Dave found'
end while @user.destroy if @user.last_name != "Edwards"

whileブロックはdestroyの比較ではない結果を取得するため、これは機能しませんlast_name

PSこれがこの方法で不可能な場合、同じパラメータでRailsコントローラアクションをリロードするにはどうすればよいですか?

4

3 に答える 3

3

これを試して:

begin
  @user = UserFinder.find_by_first_name("Dave")
  render :text => '// No user named Dave found' if @user.nil?
  return if @user.nil?
end while @user.last_name != "Edwards" && @user.destroy
于 2012-10-26T12:15:41.313 に答える
0

これはあなたのために働きますか?

while (@user = UserFinder.find(first_name: "Dave")) and @user.last_name != "Edwards"
  @user.destroy
end

if @user
  render ...
else
  render :text => '// No user named Dave found'
end
于 2012-10-26T12:12:01.927 に答える
0
user.destroy while user = UserFinder.where(:first_name => "Dave",  :last_name => "Edwards").first
于 2012-10-26T13:35:42.000 に答える