У меня есть модели для контактов, групп и для членов, которые образуют группы контактов, которые связаны через отношения, называемые членами. Модель участников разрешает отношения «многие ко многим» между контактами и группами, используя атрибут :through
.Почему мой метод модели Ruby не найден?
Когда я пытаюсь добавить новый метод, называемый предложениями в модель Contact
, и назовите его из моего ContactsController
, как показано ниже, я получаю сообщение о том, что метод не найден. ContactsController выглядит следующим образом:
class ContactsController < ApplicationController
before_action :logged_in_user, only: [:index, :show, :edit, :update, :destroy]
before_action :set_contact, only: [:show, :edit, :update, :destroy]
# GET suggestions
def suggestions
recipients_string = params[:recipients_field]
# Call theContact model to list of all of the groups and individual contacts that aren't already in the recipient list
# and return them as an html unordered list of clickable links
@suggestions = contacts.suggestions[recipients_string: :recipients_string]
end
...
...
end
модель для контактов выглядит следующим образом:
class Contact < ActiveRecord::Base
has_many :members
has_many :groups, :through => :members
default_scope -> { order(name: :asc) }
validates :name, presence: true
validates :email, presence: true
accepts_nested_attributes_for :members,
:reject_if => :all_blank,
:allow_destroy => true
accepts_nested_attributes_for :groups
def suggestions
recipients_string = params[:recipients_string]
# some processing here to ptoduce @suggestions
@suggestions
end
end
В использовании Contacts
, я не хочу использовать отношения, но я заметил, что когда я звоните contacts.suggestions
, я получаю
undefined method `suggestions' for #<Contact::ActiveRecord_Relation:0x007fd75b32c988>
ли это какое-либо отношение, почему этот метод не найден? Что я делаю не так?
Где находится "контакт"? Поскольку у вас есть 'ActiveRecord :: Relation' в' contacts', и нет метода, называемого 'предложения' в' ActiveRecord :: Relation', вы видите эту ошибку. Кроме того, в классе 'Contact', где' params' определяется или передается? – Anand