2015-08-29 6 views
6

में मौजूदा मॉड्यूल का उपयोग करने की चलो कहते हैं कि मैं एक मॉड्यूल MyApp.User है और यह निम्न विधि है दो:कैसे अमृत

def update_some_counter(user) do 
    from(u in MyApp.User , where: u.id == ^user.id) 
    |> Repo.update_all(inc: [some_counter: 1]) 
end 

वहाँ कुछ विधि है कि मौजूदा मॉड्यूल को पुन: प्राप्त करने के लिए उपरोक्त कोड में MyApp.User बदलने के लिए एक तरीका है?

उत्तर

15

पैट्रिक का जवाब सही है: आप __MODULE__ का उपयोग कर सकते हैं। हालांकि, मैं प्रश्न के रूप में क्वेरी प्राप्त करने के लिए मॉडल में आपके सभी क्वेरी फ़ंक्शंस को सलाह दूंगा (यहां देखें: http://blog.drewolson.org/composable-queries-ecto/) और अपने मॉडल के अंदर रिपॉजिटरी को कॉल न करें।

रिपोजिटरी को कॉल करने का कार्य छोड़ दें, जो एक तरफ प्रभाव है, एकीकरण परत, नियंत्रकों की तरह और क्या नहीं।

0

आप कॉलिंग मॉड्यूल के नाम तक पहुंचने के लिए विशेष फॉर्म __CALLER__ का उपयोग कर सकते हैं।

+3

यह विशेष रूप केवल मैक्रोज़ के अंदर उपलब्ध है। –

7

आप __MODULE__ का उपयोग कर सकते हैं, जिसे संकलन समय पर संलग्न मॉड्यूल के नाम से बदल दिया जाएगा।

संबंधित मुद्दे