2011-07-22 48 views
0

嗨誰能幫助我重構這個代碼到case語句在Ruby中菜鳥幫助重新格式化如果對案件的Rails

def can_save? 
    if signed_in? 
     @user.updating_password = false 
     return true if @greeting.save & @user.save 
    elsif !guest_user? & @greeting.valid? & @user.valid? 
     sign_in(@user) if @greeting.save & @user.save 
     return true 
    elsif guest_user? 
     if !params[:user][:email].blank? & (@user.valid? & @greeting.valid?) 
     if (@greeting.save & @user.save) 
      sign_in(@user) 
      return true 
     end 
     elsif params[:user][:email].blank? 
     return true if @greeting.save 
     end 
    end 
    end 
+0

你確定這條線**如果@ greeting.save返回true ** ?在這種情況下不應該保存用戶? – Anatoly

+0

嗨,對不起,拿回這麼久。是的,這很重要。有了這個應用程序,有時我們會允許訪問者不成爲用戶,只是發佈消息。 – chell

+0

好的,所以你可以傳遞參數到方法中,並保存用戶,如果它是真的 – Anatoly

回答

0
def can_save? 
    validation_check 

    if signed_in? 
    @user.updating_password = false 
    else 
    unless params[:user][:email].blank? 
     sign_in(@user) 
    end 
    end 

end 


private 

def validation_check 
    if @user.valid? && @greeting.valid? 
    @user.save 
    @greeting.save 
    else 
    return 
    end 
end 
+0

我想我不得不適應這個代碼,以包括那種情況下,當我們不創建一個用戶。如果這不是經理並且用戶未登錄,我希望能夠保存有效的問候語,因此他們是來賓。 – chell