संपादित करें, जो अलग-अलग उपयोगकर्ताओं के लिए एक ही स्ट्रिंग का उत्पादन नहीं करता: CanCanCan
के लिए संशोधित CanCanCan के संस्करण 1.12 के रूप में (कैनकन की सामुदायिक निरंतरता), Ability.new(user).permissions
दिए गए उपयोगकर्ता के लिए सभी अनुमतियों के साथ एक हैश देता है।
पिछला जवाब (कैनकैन):
यह एक छोटे से जटिल हो सकता है ... लेकिन यहाँ यह जाता है ..
आप की क्षमता मॉडल कैनकैन, आप के लिए आवश्यक में निर्दिष्ट उपयोगकर्ता पार कर लेते हैं है कि उपयोगकर्ताओं को भूमिका instance_variable_get का उपयोग कर की परिभाषा का उपयोग कर सकते हैं और फिर उसे तोड़ तुम वहाँ से चाहते हैं जो कुछ भी स्ट्रिंग मूल्यों में ..
>> u=User.new(:role=>"admin")
>> a=Ability.new(u)
>> a.instance_variable_get("@rules").collect{
|rule| rule.instance_variable_get("@actions").to_s
}
=> ["read", "manage", "update"]
अगर आप मॉडल है, जिसमें उन नियमों में हैं जानना चाहता हूँ पर flicted, तो आप इसके नाम पाने के लिए @subjects उदाहरण चर का उपयोग कर सकते ..
यहाँ है जहाँ से मैं (पीपी)
Ability:0x5b41dba @rules=[
#<CanCan::Rule:0xc114739
@actions=[:read],
@base_behavior=true,
@conditions={},
@match_all=false,
@block=nil,
@subjects=[
User(role: string)]>,
#<CanCan::Rule:0x7ec40b92
@actions=[:manage],
@base_behavior=true,
@conditions={},
@match_all=false,
@block=nil,
@subjects=[
Encounter(id: integer)]>,
#<CanCan::Rule:0x55bf110c
@actions=[:update],
@base_behavior=true,
@conditions={:id=>4},
@match_all=false,
@block=nil,
@subjects=[
User(role: string)]>
]
कि इनाम याद किया:
और यहाँ मेरी Backbone.js मॉडल है कि कर सकते हैं() विधि को लागू करता है! :( – RGB