文檔:Under the "Defined?, And, Or, and Not" section
使用and
是鏈接相關操作有用在一起,直到其中一人返回nil
或false
。您可以像您在問題中顯示的那樣使用它,或者也可以使用它來短路代碼行。
# Short circuit example
blog = Blog.find_by_id(id) and blog.publish!
的博客只得到調用它.publish!
如果find_by_id
成功。
在您的例子:
def access_denied
redirect_to login_path, :notice => "Please log in to continue" and return false
end
他們只是用它來更緊湊在一行寫的代碼。
然而,它也是在那裏你可以根據條件語句呈現控制器操作有用的,你不想讓Rails的「多呈現」警告:
def show
if something
render :partial => 'some_partial'
end
render :partial => 'some_other_partial'
end
Rails會給出警告如果something
返回true,因爲您有多個呈現語句在動作中被評估。但是,如果將其更改爲
if something
render :partial => 'some_partial' and return
end
它將允許您停止執行操作。
哦,我以爲你在問*爲什麼會被使用。無論如何,如果我的答案中所述的過濾器正在使用它,請非常謹慎。 – 2012-01-11 19:47:55