Ruby on rails RubyonRails,Desive:如何添加用户名和用户名详细信息?需要关系数据库模式吗
\d用户Ruby on rails RubyonRails,Desive:如何添加用户名和用户名详细信息?需要关系数据库模式吗,ruby-on-rails,database,postgresql,database-design,devise,Ruby On Rails,Database,Postgresql,Database Design,Devise,\d用户 Table "public.users" Column | Type | Modifiers ------------------------+-----------------------------+------------------
Table "public.users"
Column | Type | Modifiers
------------------------+-----------------------------+----------------------------------------------------
id | integer | not null default nextval('users_id_seq'::regclass)
email | character varying(255) | not null default ''::character varying
encrypted_password | character varying(128) | not null default ''::character varying
reset_password_token | character varying(255) |
reset_password_sent_at | timestamp without time zone |
remember_created_at | timestamp without time zone |
sign_in_count | integer | default 0
current_sign_in_at | timestamp without time zone |
last_sign_in_at | timestamp without time zone |
current_sign_in_ip | character varying(255) |
last_sign_in_ip | character varying(255) |
created_at | timestamp without time zone |
updated_at | timestamp without time zone |
Indexes:
"users_pkey" PRIMARY KEY, btree (id)
"index_users_on_email" UNIQUE, btree (email)
"index_users_on_reset_password_token" UNIQUE, btree (reset_password_token)
\d员额
Table "public.posts"
Column | Type | Modifiers
-------------+------------------------+----------------------------------------------------
id | integer | not null default nextval('posts_id_seq'::regclass)
title | character varying(100) | not null
content | character varying(500) | not null
created_at | date |
updated_at | date |
tags | character varying(55) | not null default '50'::character varying
category_id | integer | not null default 1
Indexes:
"posts_pkey" PRIMARY KEY, btree (id)
我需要跟踪谁在发布帖子,所以我需要在posts表中的username列。
我应该在posts表中添加username列,还是应该在users表中添加username,或者应该使用username为userdetails创建一个不同的表
我还需要检查用户是管理员还是普通用户
有人能为此发布完整的关系数据库模式吗
设计用户模型
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :token_authenticatable, :encryptable, :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
# Setup accessible (or protected) attributes for your model
attr_accessible :email, :password, :password_confirmation, :remember_me
end
class用户
您不需要在帖子
表中输入用户名,您只需要用户ID。用户名将出现在用户
表中
对于用户
表,您希望在表创建中使用以下内容:
t.string, :username, :null => false
如果要限制长度,请使用:limit
。然后在用户
类中:
validates :username, :uniqueness => { :case_sensitive => false }
has_many :posts
如果您不希望用户名是唯一的,那么可以删除验证:username
;您还可以在验证钩子之前对中的用户名进行降级,并在用户名
上向用户
表中添加唯一索引。您可能需要在的多个
上设置一些标志,有关详细信息,请参阅
然后,在创建帖子时
:
t.integer, :user_id, :null => false
在帖子中
:
belongs_to :user
然后,您可以通过帖子的用户
获取帖子的用户名:
p.user.username
如果您试图将用户名添加到现有数据中,那么在迁移新列时需要:null=>true
,并且必须找出如何处理现有数据中缺少的值
我不知道这些将如何与Deviate集成(对不起,我不使用它),或者Deviate是否会关心用户名。希望其他人可以填写Desive部分(如果有),如果有,请给我留言。我还需要“角色”来检查它是管理员还是普通用户。我更新了原始帖子/问题,请再次查看。@guru:您可以向用户添加一个布尔is_admin
标志,您可能希望该标志上有:default=>false
。或者,如果您需要更复杂的权限处理,可以使用cancan。如果我在users表中添加id\u admin,那么在登录后如何检查该用户是否为admin?@guru:如果user.is\u admin
则您将拥有一个admin用户,如果!如果user.is_admin
,则您将拥有一个非管理员用户。