Mongoid - односторонние ссылки - PullRequest
2 голосов
/ 10 августа 2011

Можно ли сделать одностороннюю ссылку в монгоиде?

Я бы хотел сделать что-то вроде:

class User
  include Mongoid::Document
  include Mongoid::Timestamps

  has_many :blogs, :class_name => "Blog", :inverse_of => :editor
  has_one :active_blog, :class_name => "Blog", :inverse_of => :active_users
end

и модель блога:

class Blog
  include Mongoid::Document
  include Mongoid::Timestamps

  belongs_to :editor, :class_name => "User", :inverse_of => :blogs

end

Итак, я бы хотел, чтобы пользователь сохранил идентификатор объекта, ссылающийся на блог, который он редактирует / публикует в данный момент. Мне не нужно, чтобы блог знал об активных пользователях, только наоборот.

Похоже, что каноническим способом сделать это было бы использование в "User_to" пользователя и "Has_many" в блоге. Это работает, но не идеально, потому что на самом деле не семантически выражает отношения между двумя моделями.

Я новичок в Mongoid и не смог найти лучшего ответа. Есть ли лучший способ настроить этот тип выпуска?

Спасибо за тонну!

1 Ответ

5 голосов
/ 12 августа 2011

Если вы даже не хотите создавать даже аксессор active_user на стороне блога, вы можете иметь:

class User
  belongs_to :active_blog, :class_name => "Blog", :inverse_of => nil
end

С другой стороны, has_many / has_one и assign_to мне кажется вполне подходящим.Он не будет хранить user_ids в блоге, и блог не должен знать об активном пользователе, если только вы не решите это сделать и не начнете использовать средство доступа со стороны блога.

...