2017-01-18 4 views
0

У меня есть модель Document и модель KeyWord.Рельсы: найти все связанные записи habtm

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

Мне нужно выбрать только те ключевые слова, которые фактически отнесены к Документу.

Я пробовал:

Document.keywords.map { |e| e.keywrd } 

и это:

Document.keywords.select(:keywrd) 

Это возвращает эту ошибку:

NoMethodError: undefined method `keywords' for #<Class:0x007fcd100d2b38> 

ответ

1

Вы можете не только сделать

Keyword.joins(:documents) 

Что вы должны получить все ключевые слова, которые имеют документы, потому что он будет делать внутреннее соединение

0

Вам нужно найти конкретный Document первым.

document = Document.find(1) 
document.keywords 

Ключевое слово принадлежит к экземпляру класса Document.

0

В вашем примере вы используете статические методы, для которых не требуется экземпляр объекта. вы должны использовать экземпляр Methode (вызывается из объекта, как Hassanin предложил в своем ответе)

И убедитесь, что вы объявили связь между документом и ключевыми словами.

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