2012-06-19 10 views
5

में रिकॉर्ड फ़ील्ड के लिए विज्ञापन-प्रसार सत्यापन मैं अपने लिफ्ट एप्लिकेशन में अपनी उपयोगकर्ता कक्षा का विकास कर रहा हूं और दो रूपों का विकास किया है, एक उपयोगकर्ता साइनअप के लिए और एक उपयोगकर्ता लॉगिन के लिए।लिफ्ट

class MongoUser private() extends MongoRecord[MongoUser] 
    with MongoId[MongoUser] { 

    def meta = MongoUser 

    object firstname extends StringField(this, "") 
    object lastname extends StringField(this, "") 
    object password extends PasswordField(this, "") 
    object email extends EmailField(this, 90) 
    object business extends StringField(this, "") 

    /* 
    * validation method for checking email is unique 
    */ 
    protected def emailUnique(emailVal:String) = { 
     meta.findAll("email", emailVal) match { 
     case Nil => Nil 
     case _ => List(FieldError(email, "Email should be unique")) 
     } 
    } 
} 

और निम्न दो स्क्रीन:

object SignupWizard extends Wizard { 
    object user extends WizardVar(MongoUser.createRecord) 

    val person = new Screen { 

    addFields(() => user.is.firstname) 
    addFields(() => user.is.lastname) 
    addFields(() => user.is.password) 
    addFields(() => user.is.email) 


    override def nextScreen = { 
     //user.is.save 
     business 
    } 
    } 

    val business = new Screen { 
    addFields(() => user.is.business) 
    } 

    def finish() { 
    user.is.save 
    } 

} 

/* 
*Screen for user login 
*/ 

object LoginScreen extends LiftScreen { 
    object user extends ScreenVar(MongoUser) 

    addFields(() => user.is.email) 
    addFields(() => user.is.password) 


    def finish() { 
    S.notice(
     user.is.login(
     user.email.toString, 
     user.password.toString).toString) 
    } 

} 

मुझे यकीन है कि SignupWizard स्क्रीन में, ईमेल पता अद्वितीय है कि बनाने की जरूरत है

मैं निम्नलिखित उपयोगकर्ता वर्ग की है। मैं तो जैसे MongoUser कक्षा में ईमेल क्षेत्र बदलकर ऐसा कर सकते हैं:

object email extends EmailField(this, 90) { 
     override def validations = { 
     emailUnique _ :: 
     super.validations 
     } 
} 

लेकिन वह अब मतलब यह है कि सत्यापन नियम भी जो स्पष्ट रूप से नहीं है जो मैं चाहता प्रवेश पर लागू होता है।

प्रश्न: अलग-अलग स्क्रीनों में मेरे मोंगोउसर फ़ील्ड में विज्ञापन-प्रसार सत्यापन नियम जोड़ने का सबसे प्रभावी तरीका क्या है?

उत्तर

0

बिल्कुल रिकार्ड में सवाल में मान्यता न रखें, और विज़ार्ड में एक कस्टम फ़ील्ड का उपयोग करें:

object wizard extends Wizard { 
    // don't add the email field with addField() 
    val email = field("Email", user.is.email.is, trim, emailUnique _, ...) 
} 
संबंधित मुद्दे