在普通用户表"user"(user_id/user_email/user_pwd/etc)旁边,存储配置文件信息的最佳方法是什么?
是否只需将字段添加到用户表中,如"user"
(user_id/user_email/user_pwd/user_firstname/user_lastname/user_views/etc)
Run Code Online (Sandbox Code Playgroud)
或者创建另一个名为"profiles"的表
(profile_id/user_id/user_firstname/user_lastname/user_views/etc)
Run Code Online (Sandbox Code Playgroud)
或者会去一个带有属性定义的表和另一个表来存储这些值?
我知道最后一个是最灵活的,因为您可以轻松添加和删除字段.但对于一个大型网站(5万用户),这会快吗?
我在mysql中有一个用户表,其中包含所有用户数据(名字,姓氏,地址等)
但是,我应该将身份验证详细信息存储在另一个表(用户名,密码)中,并通过用户ID链接两个表吗?
这有什么意义吗?
它更安全吗?
还是只是增加额外的编码?
我正在使用 Devise 在我的应用程序中构建注册/身份验证系统。
查看了相当多的用于向设计模型添加信息的资源(例如用户名、传记、头像 URL 等)[资源包括Jaco Pretorius 的网站、这个(格式错误的)SO 问题和这个 SO 问题。
一切都很好——它有效。但我的问题是它保存到 User 模型,根据数据库规范化(也引用这个 SO 问题has_one),它实际上应该保存到通过and连接的 User 子模型belongs_to。
到目前为止,我已经User通过 Devise 创建了一个模型。我还UserProfile通过rails generate脚本创建了一个模型。
user.rb(供参考)
class User < ActiveRecord::Base
devise :database_authenticatable, :registerable, :confirmable, :recoverable, :rememberable, :trackable, :validatable
has_one :user_profile, dependent: :destroy
end
Run Code Online (Sandbox Code Playgroud)
用户配置文件.rb
class UserProfile < ActiveRecord::Base
belongs_to :user
end
Run Code Online (Sandbox Code Playgroud)
时间戳_创建_用户_配置文件.rb
class CreateUserProfiles < ActiveRecord::Migration
def change
create_table :user_profiles do |t|
t.string …Run Code Online (Sandbox Code Playgroud)