Should I just write a plugin for this? On 10/11/2006, "[EMAIL PROTECTED]" <[EMAIL PROTECTED]> wrote:
>Sorry about my incomplete post, I was in a serious hurry, off to a >company luncheon. So, here is the strategy I was hoping to convey. > >First, I wouldn't put it in the User model personally, simply because it >doesn't really have anything to do with a User in the conventional OO >paradigm. It would be useful to have an method is_verified? that checks >a :verified attribute though. With that said, here's an updated >description of UserVerification (i prefer it to UserVerification for >disambiguation with common rails terms): > > > > >1. user_verification migration: >.. >t.column :user_id, :integer # user id instead of username, id will not >change >t.column :hash, :string # SHA1 hash >t.column :salts, :text # serialized Array >t.column :created_at, :datetime >.. > > > > >2. UserVerification model: >.. >before_save :generate_hash >after_save :send_verification_email >after_destroy :make_user_valid >.. >belongs_to :user >serialize :salts, Array >.. >def user_valid?(hash_from_email) > (self.hash == hash_from_email) >end >.. >protected >def generate_hash > self.hash = Digest::SHA1.hexdigest(self.salts.join) >end >.. >def send_verification_email > ... #send email to user with link: >domain.com/validate?hash=892he98hd...&[EMAIL PROTECTED] >end >.. >def make_user_valid > ... > self.user.verified = true > self.user.save > ... >end > > >3. Then, when the user clicks the link in the email, you'll have a >verification method that says: >.. >verify = UserVerification.find_by_hash(params[:hash]) >if User.find_by_email(:params[:email]) == verify.user > verify.destroy # user becomes valid >end >.. > > >Hope this helps/makes sense!! > >-Jordan > > >On 10/11/2006, "Patrick Crowley" <[EMAIL PROTECTED]> wrote: > >>I'd prefer to keep this stuff in the User model, but I like the >>serialization trick, Jordan. >> >>Best, >>Patrick >> >> >>On Oct 11, 2006, at 12:22 PM, Nick Zadrozny wrote: >> >>> On 10/11/06, Nick Zadrozny <[EMAIL PROTECTED]> wrote: >>>> For that second step, wouldn't you have to know or hardcode the >>>> position of the username? >>> >>> Wait, I'm an idiot. You have the username in the UserValidation >>> migration. And I'm increasingly not sure that those columns have to be >>> in a separate model from your User object in the first place. I think >>> I figured out my own questions :-) >>> >>> -- >>> Nick Zadrozny >>> _______________________________________________ >>> Sdruby mailing list >>> [email protected] >>> http://lists.sdruby.com/mailman/listinfo/sdruby >> >>_______________________________________________ >>Sdruby mailing list >>[email protected] >>http://lists.sdruby.com/mailman/listinfo/sdruby >_______________________________________________ >Sdruby mailing list >[email protected] >http://lists.sdruby.com/mailman/listinfo/sdruby _______________________________________________ Sdruby mailing list [email protected] http://lists.sdruby.com/mailman/listinfo/sdruby
