2010-06-24 19 views

回答

59

的純形容詞形式是很容易地在Ruby和Rails常態 - even?nil?empty?blank?例如。我能想到的形式is_#{something}?的唯一方法是Kernel#is_a?來確定類別標識。因此,要堅持使用標準命名約定,我將在這樣的布爾方法上省略is_

+0

謝謝感謝您的評論。不過,我相信'is_xxx'將會更適合我的應用程序。我運行了一個名爲'is_client'的布爾值。用'client'代替它使它看起來像一個ActiveRecord關聯(儘管我現在沒有在我的設計中使用Client模型)。 – kikito 2010-06-24 21:34:05

+6

我認爲查克在這裏避免的是問號的包含。這將是'client?'(包括問號),而不是'client'或'is_client'。 'is_'前綴適用於不支持向名稱添加問號的語言。定義它很簡單:'def客戶端? ...結束' – PhilT 2012-07-03 12:27:40

+4

另外,Rails爲布爾值創建相應的方法。所以如果你有一個叫做client的字段是一個布爾值,那麼Rails將在該模型上創建一個名爲'client?'的方法,允許你檢查它是否被設置。 – PhilT 2012-07-03 12:39:51

7

在2你應該選擇一個聽起來更好的:User.active?或User.is_active?

我會親自選擇前者。

問號goody來自Ruby,而不是Rails。

+0

你給我解決了我的問題 - 我最終使用了我認爲最正確的方法('is_client')。然而Chuck回答了這個問題 - Rails(和Ruby)似乎贊成簡單形容詞。如果可以的話,我會在你們兩個之間分享答案。我只能給你+1,我的謝意。另外,感謝關​​於問號的指針 - 我不知道它來自ruby本身。 – kikito 2010-06-24 21:38:08

+0

我真的很討厭「跟​​隨你的心」的答案。非答案,真的。 – Arcolye 2012-11-22 15:55:41

+1

我選擇比前者晚。 User.active對我來說可能是一個命名範圍。對我來說,更清楚的是.active是一個範圍,.is_active是一個布爾值。是的,你有?關於該方法,但是:User.active,user.active?,user.is_active? - 最後一個更容易上下文識別,恕我直言。 – 2013-03-08 23:32:09