मैं बहु-किरायेदारी प्रबंधित करने के लिए acts_as_tenant मणि का उपयोग कर रहा हूं, और मैं उपयोगकर्ताओं का प्रबंधन करने के लिए उपयोग कर रहा हूं।रेलों में devise और act_as_tenant के साथ उपयोगकर्ताओं की विशिष्टता 3
मेरे पास केवल किरायेदारों के लिए उपयोगकर्ता मॉडल और खाता मॉडल तैयार किया गया है। मैं एकाधिक किरायेदारों के खिलाफ उपयोगकर्ताओं को बना सकता हूं - यह सब ठीक काम कर रहा है जब मैं अलग-अलग किरायेदार आईडी के खिलाफ एक ही ईमेल के साथ दो उपयोगकर्ताओं को बनाने का प्रयास करता हूं, तो मुझे एक अचूकता त्रुटि मिलती है। मैं वर्णन के अनुसार validates_uniqueness_to_tenant विकल्प का उपयोग कर रहा हूं।
उपयोगकर्ता मॉडल
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :token_authenticatable, :confirmable,
# :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
attr_accessible :email, :password, :password_confirmation, :remember_me
acts_as_tenant(:account)
validates_uniqueness_to_tenant :email
end
खाता मॉडल
class Account < ActiveRecord::Base
attr_accessible :name
end
आवेदन नियंत्रक
class ApplicationController < ActionController::Base
set_current_tenant_by_subdomain(:account, :subdomain)
protect_from_forgery
end
इस तरह यह acts_as_tenant में सभी दस्तावेज़ के आधार पर काम करना चाहिए लग रहा है, मैं ओवरराइड करने की आवश्यकता है इसके बजाय devise स्तर पर कुछ?
संपादित करें: कुछ सिर-खरोंच और कुछ ब्रेक के बाद, समस्या मुझे विश्वास है क्योंकि डिफ़ॉल्ट रूप से डेविस ने ईमेल कॉलम में एक अद्वितीय अनुक्रमणिका जोड़ दी है। यह स्पष्ट रूप से क्या करता है जो act_as_tenant करना चाहता है ... मैं इंडेक्स को हटाने का प्रयास करूंगा और देख सकता हूं कि डेविस पुक्स या नहीं।
संपादित करें 2: ठीक है, आधिकारिक तौर पर इस पर छोड़ दिया गया है। मेरे पास मुख्य साइट के लिए हाथ से लुढ़का प्रमाणीकरण है और यह act_as_tenant के साथ ठीक से काम कर रहा है। मैं केवल कुछ स्तर पर act_as_tenant और Devise के बीच कुछ असंगतता मान सकता हूं - इस चरण में इसे ढूंढने के लिए।
अच्छा उत्तर - किसी और के लिए ध्यान देने योग्य मूल्य टी को ईमेल पर अद्वितीय इंडेक्स को हटाने के लिए याद है जो भी जोड़ता है। –
एफवाईआई: एएटी एक स्कोप्ड सत्यापनकर्ता प्रदान करता है: 'validates_uniqueness_to_tenant: ईमेल'। इसके अलावा ईमेल प्रारूप आसानी से 'validates_format_of: ईमेल का उपयोग करके किया जा सकता है: Devise.email_regexp' – Besi