1
我想爲Rails應用程序中的所有模型定義一個named_scope。試圖在所有模型上定義named_scopes和其他ActiveRecord關係
目前,我已經能夠通過編寫ActiveRecord :: Base的初始化程序並將常規方法放在那裏來接近此。 當然,在創建查詢鏈時,這並沒有提供任何真正的優勢,而且可能是完成工作的最不重要的方式。
但是,當我開始嘗試使用has_many,named_scope等... ActiveRecord方法時,它不起作用。
雖然我明白我的named_scope可能不正確,但我真的只想獲得定義named_scope的幫助。另外,我目前對任何Ruby ACL GEM都不感興趣。
在初始化/:
class ActiveRecord::Base
has_many(:permissions)
named_scope(:acl_check, lambda do |user_id, method|
{
:include => :permission,
:conditions => [
["permissions.user_id=?", user_id],
["permissions.method=?", method],
["permissions.classname=?", self.class.name]
]
}
end)
# Conducts a permission check for the current instance.
def check_acl?(user_id, method)
# Perform the permission check by User.
permission_check = Permission.find_by_user_id_and_instance_id_and_classname_and_method(user_id, self.id, self.class.name, method)
if(permission_check)
# If the row exists, we generate a hit.
return(true)
end
# Perform the permission check by Role.
# Otherwise, the permissions check was a miss.
return(false)
end
end
是否有任何替代方法可以用於將named_scopes添加到我的應用中的所有模型中? 通常情況下,我可以使用這些方法,但是它們不能以named_scope的方式參與鏈。使用簡單的方法還有更多的查詢活動和開銷.... – 2009-06-25 18:36:52