`
pure
  • 浏览: 350899 次
社区版块
存档分类
最新评论

如何合理的实现用户注册信息收集

阅读更多
在做注册用户管理时,常见做法是,一个User对象包括了用户的所有属性,比如:用户登陆名、密码、爱好、特长、邮箱、性别、年龄、地址、电话等等信息。

结果就是这个表的字段非常多:

  create_table "users", :force => true do |t|
    t.string   "login"
    t.string   "crypted_password",          :limit => 40
    t.string   "salt",                      :limit => 40
    t.string   "remember_token"
    t.datetime "remember_token_expires_at"
    t.boolean  "is_admin"
    t.boolean  "can_send_messages",                       :default => true
    t.string   "time_zone",                               :default => "UTC"
    t.string   "email_verification"
    t.boolean  "email_verified"

    t.string   "first_name"
    t.string   "last_name"
    t.string   "website"
    t.string   "blog"
    t.string   "flickr"
    t.text     "about_me"
    t.string   "aim_name"
    t.string   "gtalk_name"
    t.string   "ichat_name"
    t.string   "icon"
    t.string   "location"
    t.string   "email"
    t.boolean  "is_active",        :default => false
    t.string   "youtube_username"
    t.string   "flickr_username"

    t.datetime "created_at"
    t.datetime "updated_at"
  end



另外一种做法是分成User和Profile两个对象,用户注册的时候只需填写简单的用户名和密码(邮箱)信息就可以完成注册,Profile信息则注册完成后,用户根据需要来填写,非强制性的,这样用户也乐意注册。同时User信息来了也方便和其它系统集成,比如要加入论坛等功能时。参考lovd-by-less的做法:

create_table "profiles", :force => true do |t|
    t.integer  "user_id"
    t.string   "first_name"
    t.string   "last_name"
    t.string   "website"
    t.string   "blog"
    t.string   "flickr"
    t.text     "about_me"
    t.string   "aim_name"
    t.string   "gtalk_name"
    t.string   "ichat_name"
    t.string   "icon"
    t.string   "location"
    t.string   "email"
    t.boolean  "is_active",        :default => false
    t.string   "youtube_username"
    t.string   "flickr_username"
    t.datetime "created_at"
    t.datetime "updated_at"
  end

  add_index "profiles", ["user_id"], :name => "index_profiles_on_user_id"

  create_table "users", :force => true do |t|
    t.string   "login"
    t.string   "crypted_password",          :limit => 40
    t.string   "salt",                      :limit => 40
    t.string   "remember_token"
    t.datetime "remember_token_expires_at"
    t.boolean  "is_admin"
    t.boolean  "can_send_messages",                       :default => true
    t.string   "time_zone",                               :default => "UTC"
    t.string   "email_verification"
    t.boolean  "email_verified"
    t.datetime "created_at"
    t.datetime "updated_at"
  end

  add_index "users", ["login"], :name => "index_users_on_login"


表结构是这样的,同时增加User Profile两个模型,在注册的时候,注册完保存用户基本信息的同时创建Profile信息,使User和Profile关联起来,这样就知道profile属于那个用户了。
class Profile < ActiveRecord::Base
  belongs_to :user
end


class User < ActiveRecord::Base
  has_one :profile, :dependent => :nullify #删除user时,将profile的user_id设置为null

  attr_accessor :email

  def before_create
    p = Profile.find_by_email @email
  end

  def after_create
    p = Profile.find_or_create_by_email @email
    raise 'User found when should be nil' unless p.user.blank?
    p.is_active=true #默认是否激活
    p.user_id = id #用户的id
    p.save
  end

end


以后,比如用户的博客、朋友、消息、相册都与Profile关联,不直接与User关联。
分享到:
评论
7 楼 木剑先生 2009-09-12  
你注册的时候一定要把User的所有属性显示出来要用户填写么?可以只写一部分么,没必要这么麻烦做one to one association,其他个人信息可以在作个人资料的修改时候填写
6 楼 qianjigui 2009-07-20  
<div class="quote_title">qichunren 写道</div>
<div class="quote_div">感觉 标题是讲web用户体验,而 内容是讲技术实现。<br><br>对于 如何合理的实现用户注册信息收集?<br>我自己从来不想让用户的注册过程变得麻烦,我不会让他要填写一大堆的个人信息 才能完成注册,注册信息越简单越好,等他注册好了,可以通过可以手段来让用户去填充 个人资料信息。 关于这个,好像以前在讨论过。</div>
<p>确实有一点遗憾,不过看看构造思路还是很不错的。</p>
<p> </p>
<p>另外关于系统相关操作信息的统计,我觉得是个非常好的讨论话题,也是很多研究人员长期从事的。</p>
<p>google没放弃任何一个细节,才让今天的使用非常人性化。</p>
<p>我也在考虑后续的系统开发中多注意收集数据,在《rails recipes》里面有关于catch 404的相关讨论,这个思路可以借鉴和传承。如果在使用Catch 404的时候,会发现系统升级后的一些问题。例如当时在看到javaeye的路由配置信息时候,发现他们在做REST迁移时候对于以前url路径的保存,很大的一方面是为了和google缓存提供服务。</p>
5 楼 pure 2009-07-16  
mccxj 写道
下一站,火星 写道
把经常用到的用户字段放到一个表里面,反之放到一个表里面

同上,楼主似乎说不到点上

其实吧,我也是分析lovd-by-less得出做法,感觉这种做法很不错,就推荐在这里。
4 楼 mccxj 2009-07-16  
下一站,火星 写道
把经常用到的用户字段放到一个表里面,反之放到一个表里面

同上,楼主似乎说不到点上
3 楼 下一站,火星 2009-07-16  
把经常用到的用户字段放到一个表里面,反之放到一个表里面
2 楼 qichunren 2009-07-16  
感觉 标题是讲web用户体验,而 内容是讲技术实现。

对于 如何合理的实现用户注册信息收集?
我自己从来不想让用户的注册过程变得麻烦,我不会让他要填写一大堆的个人信息 才能完成注册,注册信息越简单越好,等他注册好了,可以通过可以手段来让用户去填充 个人资料信息。 关于这个,好像以前在讨论过。
1 楼 jinleileiking 2009-07-15  
嗯。不错,回来试试。

相关推荐

    ssm框架基于微信小程序的图书馆座位预约的实现.rar

    基于SSM框架(Spring + Spring MVC + MyBatis)的图书馆座位预约系统旨在提供便捷、高效的图书馆座位预约服务,通过微信小程序实现用户预约座位、管理订单等功能,主要包括以下方面: 用户注册与登录:用户可以通过...

    ssm框架基于微信小程序的付费自习室管理系统的实现.rar

    用户注册与登录:用户可以通过微信小程序注册账号或使用微信账号直接登录,确保用户身份的真实性和安全性。 自习室信息浏览:系统集成了自习室信息管理服务,用户可以在微信小程序上浏览自习室的位置、容纳人数、...

    XX中台产品需求.docx

    本项目着力于数据统一管控,包含XX生态中台,XX用户管理,以及用户行为数据获取展现三系统,其中定义规范各业务端数据类型,进行各业务端应用授权,以及用户注册,登录,用户信息存储,管理员权限划分,批量导入数据...

    酒店管理信息系统课程设计.doc

    利用宾馆客房管理信息系统中合理的数据库结构来保 存数据信息,及时了解各个环节中信息的变更,通过有效的程序结构来支持各种数据操 作的执行,以提高管理效率,实现宾馆服务的系统化、规范化、自动化。通过该项目的...

    基于SSM汽车4s店销售库存管理系统+sql数据库(毕设源码).zip

    (1) 实现对不同权限的用户进行合理的管理; (2)实现对各个模块的维护和监控等功能。 会员: 会员名,姓名,性别,出生日期,联系电话,住宅地址,会员备注 雇员: 雇员编号,登录密码,姓名,性别,出生日期,雇员照片,联系电话,...

    基于SSH的医院在线挂号设计软件程序源码+数据库+WORD毕业设计论文文档.zip

    医院挂号系统主要用于实现医院的挂号,前台基本功能包括:用户注册、用户登录、医院查询、挂号、取消挂号、修改个人信息、退出等。 后台基本功能包括:系统管理员登录、医院管理、科室管理、公告管理、退出系统等。...

    基于JavaWeb实现的师资管理系统

    (2) 前台系统注册功能:必须使用Ajax验证要注册的用户是否存在; (3) 前端页面:要求页面美观、布局合理、色彩搭配协调; (4) 首页中要有体现系统主题的LOGO; (5) 所有页面之间的链接要合理,具有从首页到子页面,从...

    JSP基于SSM汽车4s店销售库存管理系统+源代码+文档说明+数据库.zip

    (1) 实现对不同权限的用户进行合理的管理; (2)实现对各个模块的维护和监控等功能。 会员: 会员名,姓名,性别,出生日期,联系电话,住宅地址,会员备注 雇员: 雇员编号,登录密码,姓名,性别,出生日期,雇员照片,联系电话...

    行车记录仪与车载终端之采集小程序.zip

    同时,其特色功能如实时更新的信息推送、个性化推荐以及社交分享功能,让用户能够及时获取所需信息,并方便地将优质内容分享至朋友圈或好友,实现信息的高效传播与互动。 【小程序名称】注重数据安全与隐私保护,...

    SpringBoot项目基于SpringBoot的体育馆管理系统的设计与实现.zip

    8. 安全监控与访问控制:结合门禁系统,确保场馆的安全和合理使用。 9. 客户服务与反馈:提供客户咨询渠道,收集并响应会员的建议和投诉。 10. 移动设备适配:优化移动端用户体验,支持通过智能手机应用进行预约和...

    一个调用VLC的解码库播放 RTSP流和本地的小Demo程序,兼职做了socket客户端的点击事件收集并发给服务端.zip

    同时,其特色功能如实时更新的信息推送、个性化推荐以及社交分享功能,让用户能够及时获取所需信息,并方便地将优质内容分享至朋友圈或好友,实现信息的高效传播与互动。 【小程序名称】注重数据安全与隐私保护,...

    2009计算机 毕业设计 诚信体育用品

    用户注册,当然并不一定他立即就要买东西,可以先注册,任何时候都可以来买东西,用户注册的好处在于买完东西后无需再要输入一大堆个人信息,只须将帐号和密码输入就可以了。 订单号模块 所谓订单号模块,就是客户...

    微信小程序项目源码-警务辅助人员管理系统+ssm框架+论文.rar

    1. 用户管理:实现警务辅助人员的注册、登录、信息修改等功能,确保用户信息的安全性和准确性。 2. 岗位管理:对警务辅助人员的岗位进行分类管理,包括岗位设置、岗位调整等功能,便于合理分配人力资源。 3. 工作...

    车辆管控大数据可视化平台案例源码.zip

    数据交互:提供用户注册、登录、评论等功能,使用户能够参与到车辆管控的讨论和交流中来,同时也可以与其他用户进行分享和互动。 数据分析:对收集到的车辆管控数据进行统计和分析,得出一些有价值的结论和建议,以...

    网上购物系统

    ◆ 注册顾客用户,包括用户最新网上购物系统 名、密码等信息; ◆ 修改顾客用户信息;最新网上购物系统 ◆ 删除顾客用户信息。 (6) 系统用户最新网上购物系统 管理功能 ◆ 添加系统用户,包括用户名、密码等最新...

    基于PHP美食网站网页设计.zip

    管理员验证注册信息,收集到的用户信息,分析得出的关联信息等大量的数据都由数据库管理系统管理。本文中数据库服务器端采用了Mysql作为后台数据库,使Web与数据库紧密联系起来。在设计过程中,充分保证了系统代码的...

    计算机论坛开发毕业设计.doc

    17 4.1 用户注册登入 17 4.2 注册用户发帖 18 4.3 注册用户浏览帖子 19 4.4 注册用户回帖 20 4.5管理会员信息 21 4.6主界面 21 结论 23 参考文献 24 致谢 25 绪论 论坛系统是互联网上一种人与人之间交互的必备工具。...

    校园网络安全管理系统的设计.docx

    2系统实现 2.1用户认证 用户认证的服务器终端识别注册用户身份信息的主要方法,用户登录系统后,输入个人信息,网络管理系统将自动对用户身份进行识别。为确保用户身份的真实性,系统会自动将用户名与密码以代码的...

    asp学习相关资料大全

    本论文,简要阐述了系统的开发背景与开发环境,对系统的构架进行分析,由此划分出各个模块,包括用户注册模块,用户登陆模块,个人管理模块,基本信息管理模块,特殊信息管理模块,毕业生信息管理模块,成绩管理模块...

    如何设计数据库.doc

    – 应用三大范式规范化表格 下面我们以一个BBS简易论坛的数据库设计为例来看看设计数据库的步骤: 收集信息: 与该系统有关人员进行交流、坐谈,充分理解数据库需要完成的任务 BBS论坛的基本功能: l 用户注册和登录...

Global site tag (gtag.js) - Google Analytics