在Ruby中开始/结束/

时间:2012-10-26 12:05:08

标签: ruby-on-rails ruby

这样做的最佳方法是什么?

@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

请记住,这是我所拥有的真实代码的一个非常简单的例子,所以我知道我可以首先过滤查询,但我希望这样。

我不确定如何使用beginwhile块执行此操作,因为如果遇到不想要的用户,则需要销毁该用户。

我的尝试:


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控制器动作?

3 个答案:

答案 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