Вы не хотите, чтобы имя пользователя в вашей таблице posts
, вы просто хотите идентификатор пользователя.Имя пользователя будет указано в вашей таблице users
.
Для вашей таблицы users
вы захотите указать следующее при создании таблицы:
t.string, :username, :null => false
и :limit
, если выхочу ограничить длину.Тогда в вашем User
классе:
validates :username, :uniqueness => { :case_sensitive => false }
has_many :posts
Если вы не хотите, чтобы имена пользователей были уникальными, вы можете удалить validates :username
;Вы также можете поместить имена пользователей в ловушку before_validate
и добавить уникальный индекс username
в таблицу users
.Возможно, вам понадобятся некоторые флаги для has_many
, подробности см. в руководстве .
Затем при создании posts
:
t.integer, :user_id, :null => false
и в Post
:
belongs_to :user
Затем вы можете получить имя пользователя для сообщения через его user
:
p.user.username
Если вы пытаетесь добавить имена пользователей к существующим данным, тогда вам нужновам нужно :null => true
в ваших миграциях для новых столбцов, и вам придется выяснить, что вы хотите сделать с отсутствующими значениями в ваших существующих данных.
Я не знаю, как все это интегрируетсяс devise (извините, я им не пользуюсь) или, если devise позаботится даже об именах пользователей.Надеюсь, кто-то еще может заполнить части устройства (если таковые имеются) и оставить мне комментарий, если они это сделают.