Почему этот метод класса выдает ошибку: Попытка вызова частного метода `create ' - PullRequest
0 голосов
/ 20 декабря 2011

Я получаю ошибку при запуске следующего метода в обратном вызове after_save

NoMethodError в обновлении ApprovalsController # Попытка вызова закрытого метода `create '

 def create_next_approval
      self.recommendation.create :email => self.next_approver_email #if next_approver_email? && recently_approved?
 end

Этот метод дает мне припадки в целом. Я пытаюсь создать новый объект after_save с помощью атрибута: next_approver_email.

Мне также пришлось закомментировать вторую часть метода, потому что он возвращал ошибку без метода: next_approver_email?

Я думал, что смогу пройти? к методу, и он будет проверять это?

Ответы [ 2 ]

1 голос
/ 20 декабря 2011

Если ваша модель была определена как has_many :recommendations, тогда вы должны использовать множественное число слова, например:

self.recommendations.create :email => self.next_approver_email

Что касается проверки электронной почты - как упоминалось в комментарии, вы можете использовать пустой? или (еще лучше) присутствует?например:

self.recommendations.create :email => self.next_approver_email if next_approver_email.present? && recently_approved.present?
1 голос
/ 20 декабря 2011

Трудно сказать точно, но вот теория:

Если у вас есть отношение has_one для рекомендации, вы должны вызывать create_recommendation, а не рекомендацию. Create:

self.create_recommendation :email=>self.next_approver_email #if next_approver_email? && recently_approved?

http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#method-i-has_one

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...