Rails, Mongoid, Devise Профили пользователей - PullRequest
2 голосов
/ 12 ноября 2010

Я новичок в рельсах (рельсы 3) и учусь на практике.

Я хочу создать отношение профиля пользователя. Я создал модель User с помощью devise, и это работает хорошо. Затем я создал модель профиля. Идея состоит в том, чтобы зарегистрировать пользователя и показать информацию о его профиле и, если пользователь хочет, заполнить профиль.

Но профиль связан с постами. Итак, мне нужно создать пустой профиль с действием реестра пользователя.

Как я могу это сделать?

Моя идея - изменить метод UsersController # create для создания пустого профиля, но я не знаю как.

Мои модели

class User
    include Mongoid::Document
    devise  :database_authenticatable, :registerable, :token_authenticable,        
            :omniauthable,
             :recoverable, :rememberable, :trackable, :validatable
    field :username
    key :username
    embeds_one :profile
    attr_accessible :username,:password,:password_confirmation,:remember_me

class Profile
    include Mongoid::Document
    field :name
    field :lastname
    ...
    ...
    embedded_in :user, :inverse_of => :profiles
    referenced_many :posts

Есть идеи?

1 Ответ

2 голосов
/ 13 ноября 2010

Похоже, вы встраиваете только один профиль (embeds_one: profile).Это должен быть user.profile, а не user.profiles.Кроме того, user.profile вернет экземпляр этого документа, а не массив многих документов.

Вы можете сделать что-то подобное в вашем контроллере.

user.profile.create(... put any params here ...)

По вашему мнению, вы бы сделализатем отобразите

<h2>Welcome <%=@user.profile.username %></h2>

Вам также нужно изменить

embedded_in :user, :inverse_of => :profiles

на

embedded_in :user, :inverse_of => :profile

Чтобы увидеть, есть ли у пользователя профиль или нет, просто посмотрите, есть ли у пользователя.profile возвращает ноль.

...