#ruby-on-rails #mongodb #mongoid
#ruby-on-rails #mongodb #mongoid
Вопрос:
Я пытаюсь добавить профиль для встраивания в пользователя, и я продолжаю получать эту ошибку.
Access to the collection for Profile is not allowed since it is an embedded document, please access a collection from the root document.
Я уверен, что это простая проблема для исправления, но я понятия не имею, как это сделать. Я совсем новичок в RoR, поэтому все еще немного запутанно. Вот мой код.
Модели / Профиль
class Profile
include Mongoid::Document
attr_accessible :handle, :description
field :handle
field :description
embedded_in :user
end
Контроллеры / Профиль
class ProfileController < ApplicationController
def create
@user = current_user
@profile = @user.profile.create!(params[:profile])
redirect_to dashboard_path
end
end
Просмотры / профиль /новый
<h1>Create Profile</h1>
<%= form_for [:current_user, Profile.create] do |f| %>
<div class="field">
<%= f.label :handle %>
<%= f.text_field :handle %>
</div>
<div class="field">
<%= f.label :description %>
<%= f.text_area:description %>
</div>
<p class="button"><%= f.submit %></p>
<% end %>
Ответ №1:
Вы не можете использовать Profile.create
в своем, views.html.erb
потому что Profile
он встроен в пользователя. Итак, вам нужно сделать что-то вроде current_user.build_profile
<%= form_for [:current_user, current_user.build_profile] do |f| %>
должно сработать
Ответ №2:
попробуйте
@user = current_user
@profile = Profile.new(params[:profile])
@user.profile = @profile
@user.save
# or @profile.save
Комментарии:
1. Да. Вы хотите, чтобы я опубликовал его?
2. Да, пожалуйста, добавьте пользовательскую модель в сообщение
3. О, и версия MongoID. Это может быть ошибка в старой версии.
4. Вот ссылка на код. Также я использую MongoID 2.0.1. Я уверен, что это просто то, что я делаю неправильно.