Монгоидные отношения с устройством - PullRequest
3 голосов
/ 01 декабря 2011

У меня есть приложение для рельсов с MongoDB, Mongoid Mapper и devise. Авторизованный пользователь может создавать, редактировать, удалять сообщения (леса) и комментировать эти сообщения. Я беру в качестве примера модель скриншота Райана Бейтса, 238 эпизод "Монгоид".

comment.rb

class Comment
  include Mongoid::Document
  field :name
  field :content
  embedded_in :post, :inverse_of => :comments
end

post.rb

class Post
      include Mongoid::Document
      field :name
      field :content
      validates_presence_of :name
      embeds_many :comments
    end

user.rb

class User
  include Mongoid::Document
  # Include default devise modules. Others available are:
  # :token_authenticatable, :encryptable, :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
    :recoverable, :rememberable, :trackable, :validatable

  field :username

  # Setup accessible (or protected) attributes for your model
  attr_accessible :email, :password, :password_confirmation, :remember_me

  has_many :comments
  references_many :post

end

Но когда я пытаюсь зарегистрировать нового пользователя, в форме регистрации нажмите «Зарегистрироваться», я вижу эту ошибку

Mongoid::Errors::MixedRelations in Devise::RegistrationsController#create

Referencing a(n) Comment document from the User document via a relational association is not allowed since the Comment is embedded.

Я начал эту заявку с Mysql db, а затем решил перейти на монго. Где моя ошибка?

1 Ответ

2 голосов
/ 01 декабря 2011

Поскольку комментарий включен в сообщение, вы должны иметь ссылку на сообщение пользователяПопробуйте удалить has_many :comments в User.

...