我有一个带有用户模型的Rails应用程序.我想允许用户使用一些服务登录.我有两种方法可以将其存储在数据库中,但我不确定哪种方法最好.我应该注意,我希望用户能够连接多个服务并链接帐户.
方法1: 对于每个服务,将令牌/秘密字段添加到User表.这似乎有点问题,因为如果我想存储,例如,Twitter令牌,Twitter秘密,推特屏幕名称和推特配置文件img?我可以看到User表有许多未使用的列.我希望每个服务都存储额外的信息.它看起来像这样:
id twitter_token twitter_screenname twitter_secret twitter_pic facebook_token facebook_secret facebook_pic facebook_name google_token google_secret google_name etc.
方法2:
或者每个用户可以有许多社交登录,每个社交登录属于一个用户.然后我会有一张看起来像的桌子
user_id token secret social_type # foreign key to a social_site look up table social_pic
社交类型表看起来像:
id social_site_name oauth_url
这种方法的唯一不利之处在于我必须概括我将存储的有关所有服务的内容.你们是怎么做到的?也许STI在这里是有序的......每个类型的登录都有一个类,它继承自基础登录类.
谢谢!
我会建议这样的事情:
每个用户可以有多个登录,每个登录只属于一个用户.
登录属于特定类型,一个登录只有一种类型.
SocialLogin
表有共同所有领域的登录类型,Google
,FaceBook
和Twitter
表有具体到每一个领域.