Mongoid Ассоциации не работают - PullRequest
1 голос
/ 03 октября 2011

В моей задаче мне нужны записи, относящиеся к каждой категории, но я также хочу, чтобы каждое сообщение относилось ко второй категории. Так, что один пост может быть в «Новостях», а другой - в «Спорте», но они оба будут во «Все». В настоящее время мои ассоциации таковы:

class Article
  include Mongoid::Document
belongs_to :category
belongs_to :home_category, :class_name => 'Category'
end
class Category
  include Mongoid::Category
has_many :articles
end

В настоящее время нормальная статья.категория работает нормально. Однако article.home_category устанавливается на объекте Article, но не отвечает взаимностью на объект Category. Поэтому, если я устанавливаю article.home_category=category, это работает, но если я делаю category.articles, я получаю []. Есть идеи почему?

Ответы [ 2 ]

1 голос
/ 05 октября 2011

Получается, что моя проблема заключалась в том, что я устанавливал категорию с помощью before_save, который, кстати, не работает должным образом, когда он вызывается в статье без указания параметров. Я исправил проблему, переключив before_save на after_create фильтр, и тогда он работал нормально! В конце концов не было проблем с Монгойными Ассоциациями, проблема была у меня.

1 голос
/ 03 октября 2011

способ, которым вы устанавливаете свое отношение, это отношение 1: n между статьей и категорией ... это означает, что у вас не может быть много категорий для статьи.

Вы должны изменитьэто отношение: m , см .:

http://mongoid.org/docs/relations/referenced/n-n.html

class Article
  include Mongoid::Document
   has_and_belongs_to_many :categories
end

class Category
  include Mongoid::Category

  has_and_belongs_to_many :articles
end

Или вы можете попробовать актов__соглашения для Mongoid :

http://abhishiv.tumblr.com/post/3623498128/introducing-acts-as-taggable-for-mongoid

Вероятно, не очень хорошая идея иметь два отношения к категориям, как в вашем примере кода.

...