2014-09-04 3 views
0

У меня есть две модели, Conversation и Message, и одна проблема Conversible. A Conversible имеет один Conversation и Conversation имеет много Message. Я хотел бы установить Conversible, чтобы я мог позвонить messages на моем Conversible и он вернет Message за его Conversation. Вот что у меня есть до сих пор:has_many через has_one

module Conversible 
    extend ActiveSupport::Concern 

    included do 
    has_one :conversation, as: :conversible dependent: :destroy 
    has_many :messages, through: :conversation 
    end 
end 

class Message < ActiveRecord::Base 
    belongs_to :conversation 
end 

class Conversation < ActiveRecord::Base 
    belongs_to :conversible, polymorphic: true 
    has_many :messages, dependent: :destroy 
end 

К сожалению, это не работает. Я могу позвонить conversible.messages, но он всегда возвращает пустое отношение, даже когда conversible.conversation.messages возвращает отношение с его Message.

Что мне не хватает?

+0

где вы можете добавить свой код 'Conversible'? – IS04

+0

У нас есть еще четыре модели, которые будут включать 'Conversible'. Например, есть модель «Цель», которая должна иметь «Беседу». Я оставил их, чтобы попытаться задать вопрос простым. – LandonSchropp

ответ

0

выглядит как вам не нужно Conversible модуль:

class Conversation < ActiveRecord::Base 
    belongs_to :conversible, polymorphic: true 
    has_many :messages, dependent: :destroy 
end 

class Message < ActiveRecord::Base 
    belongs_to :conversation 
end 

, а затем, если вам нужно какое-то отношение к Conversation вы могли бы написать:

class Post < ActiveRecord::Base 
    has_many :conversations, as: :conversible 
end 

или вы могли бы попробовать что-то вроде:

module Conversible 
    extend ActiveSupport::Concern 

    included 
    has_one :conversations, as: :conversible 
    has_many :messages, through: :conversations 
    end 
end 

и затем:

class Post < ActiveRecord::Base 
    include Conversible 
end 
+0

Извините, я должен был упомянуть, что это образец из более крупного проекта. У нас есть несколько моделей в нашем приложении, которые будут включать «Конвертируемые», а также другие методы, которые будут добавлены к этой проблеме. – LandonSchropp

+0

Использование 'as' исправило ошибку, но это не решило проблему. – LandonSchropp

+0

Вы имеете в виду, что второй вариант не работает? – IS04

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