Ruby on rails RubyonRails,Desive:如何添加用户名和用户名详细信息?需要关系数据库模式吗

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 ------------------------+-----------------------------+------------------

\d用户

                                           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
,则您将拥有一个非管理员用户。