def self.default_scope
where ('locked_at IS NULL')
end
,使任何人可以搜索鎖定的用戶,但我想,如果登錄用戶名爲admin,那麼他應該能夠找出鎖定的用戶,我不知道它將如何工作
在數據庫中,在用戶表中我有列名「admin」,它告訴我們誰是管理員。
我試圖在模型會議,但我認爲這不是一個好主意,請建議我別的東西
def self.default_scope
where ('locked_at IS NULL')
end
,使任何人可以搜索鎖定的用戶,但我想,如果登錄用戶名爲admin,那麼他應該能夠找出鎖定的用戶,我不知道它將如何工作
在數據庫中,在用戶表中我有列名「admin」,它告訴我們誰是管理員。
我試圖在模型會議,但我認爲這不是一個好主意,請建議我別的東西
首先,你不應該把方法和支架之間的空間與它的參數:
where('locked_at is NULL')
二。如果您的管理員已登錄,你應該簡單地使用unscoped
:
User.unscoped
避免使用默認的範圍。
感謝馬瑞克.... – 2014-10-17 11:07:52
@AmitAgarwal請標記我的答案,如果它幫助你接受。 – 2014-10-17 11:26:31
我們可以只展示默認範圍嗎? – 2014-10-17 12:20:53
你可以用它unscoped
返回該等級的範圍,而不考慮default_scope
事情是這樣的:
class User < ActiveRecord::Base
def self.default_scope
where ('locked_at IS NULL')
end
end
=> User.all # Fires "SELECT * FROM users WHERE locked_at = NULL"
=> User.unscoped.all if current_user.admin# Fires "SELECT * FROM users"
不要忘了把if
條件後未範圍。因爲正如你所提到的,用戶表有admin
列,我假設它有布爾類型。如果它是true
那麼只有它應該沒有範圍。
謝謝gagan ... – 2014-10-17 11:35:12
如果它對你有幫助,然後將其標記爲答案.. – 2014-10-17 11:39:21
我的回答有用嗎? – 2014-10-17 09:33:49