2016-09-02 7 views
0

У меня есть 2 модели:Неопределенный метод `relations` при назначении принадлежит ассоциации

class Annotation 
    include Mongoid::Document 
    belongs_to :event 
    field :desc, type: String 
end 

class Event::Event 
    include Mongoid::Document 
    has_many :annotations 
end 

И затем я создал 2 объекта в рельсах консоли, набрав:

a = Annotation.new 
e = Event::Event.new 

Теперь Everythings хорошо, но когда я

a.event = e 

Я получаю следующее сообщение об ошибке:

NoMethodError: undefined method `relations' for Event:Module 

Зачем возникает эта ошибка и как ее исправить? Благодарю.

+0

Почему это 'class Event :: Event' –

+0

@Deepak Потому что я хочу дать ему пространство имен. –

ответ

1

Попробуйте это:

class Annotation 
    include Mongoid::Document 
    belongs_to :event, class_name: 'Event::Event' 
    ... 
end 

belongs_to ассоциация по умолчанию предполагает связанный объект быть типа Event, но Event является модулем. Название класса должно быть Event::Event. Таким образом, это должно быть указано в отношении.

Сообщите мне, если это поможет.

+0

Привет, вы решили мою проблему! Большое спасибо. Я не знал, что значение по умолчанию примет событие. Не могли бы вы рассказать мне, какая часть документации указывает на это? Спасибо за помощь, потому что я новичок в Rails. Извините за задание вопросов noob. –

+0

Нет проблем. Хотя я знаю этот вариант из своего ежедневного использования. Вот документ, который вы можете просмотреть для более подробной информации. http://apidock.com/rails/v4.2.1/ActiveRecord/Associations/ClassMethods/belongs_to –