这样做的最佳方法是什么?
@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
的比较
P.S。如果这是不可能的,如何用相同的参数重新加载Rails控制器动作?
答案 0 :(得分: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
答案 1 :(得分: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
答案 2 :(得分:0)
user.destroy while user = UserFinder.where(:first_name => "Dave", :last_name => "Edwards").first