2013-08-23 1 views
0

Скажем, у меня естьКак вы можете связать произвольные модели с помощью Mongoid?

class Notification 
    include Mongoid::Document 

    field :noteworthy, type: Boolean, default: true 
    # some kind of relation to a source 
    before_create :remove_noise 

    def remove_noise 
     notification = Notification.last 
     if notification.source_id == self.source_id 
      notification.update_attribute(:noteworthy, false) 
     end 
    end 
end 

есть какой-то способ сделать это, когда источник уведомления, мог бы быть одной из моделей документов любой Mongoid ::?

Прецедент:

Я хочу создать центр уведомлений, который показывает только примечательные уведомления, то есть те, которые происходят от различных моделей.

+0

Я не уверен, что я понимаю вопрос, может ли у вас расширить его? –

ответ

0

гул, интересный, отношение к произвольной модели.

Ну, как бы я ни пошел, это сделать его не произвольным.

class Notification 
    include Mongoid::Document 
    field :noteworthy, type: Boolean, default: true 
    has_one :source 
end 

class Source 
    include Mongoid::Document 
    belongs_to, :notification 
    # stuff 
end 

class Webpage < Source 
    include Mongoid::Document 
    # stuff 
end 

class Facebook < Source 
    include Mongoid::Document 
    # stuff 
end 

class Twitter < Source 
    include Mongoid::Document 
    # stuff 
end 

Таким образом, источник has_one может быть веб-страницы, твиттер или facebook модель, так как каждый из них наследуют от класса источника. добавьте настраиваемые поля и методы в веб-страницу, Twitter, Facebook и попытайтесь сохранить ее СУХО, перемещая дублирующие методы и поля в исходную модель.

+0

Вам понадобится own_to? –

+0

yep, конечно, это только идея этого, вам, возможно, придется использовать has_and_belongs_to_many – Theta

Смежные вопросы