Rails 3, мне нужно сохранить текущий объект и создать другой - PullRequest
0 голосов
/ 20 декабря 2011

у меня

recommendations has_many approvals 

Как правило, рекомендация создается с одобрением. Человек, который может утвердить его, входит и проверяет поле для подтверждения, и ему необходимо ввести адрес электронной почты для следующего человека, который должен одобрить (электронная почта является атрибутом утверждения).

Предостережение заключается в том, что если current_user имеет user_type = SMT, то больше никаких утверждений не требуется. Это последнее утверждение.

Я использую рекомендацию /: идентификатор / утверждение /: идентификатор / редактировать действие. Я думаю, что мне просто нужен метод класса для утверждения. Что-то вроде:

before_save :save_and_create

def save_and_create
Some code that saves the current approval, creates a new one and asks me for the next admins email address, and send that user an email requesting that they approve
end 

Любая помощь будет принята с благодарностью

Ответы [ 2 ]

0 голосов
/ 30 декабря 2011

Я наконец понял это. Я просто создал обратный вызов before_save и следующий метод:

def create_next_approval
      next_approval = self.recommendation.approvals.build(:email => self.next_approver_email, :user_id  => User.find_by_email(next_approver_email))
      next_approval.save  if next_approver_email.present? && recently_approved? 
    end 

надеюсь, это поможет кому-то еще в моих туфлях.

0 голосов
/ 20 декабря 2011
# old post
class Recommendation << AR
  validate :approval_completed?

  def approval_completed?
    if self.approvals.last.user.type == "SMT"
      return true
    else 
      return false # or a number for needed approvals: self.approvals.count >= 5
    end
  end
end 

# new solution
class Approval << AR
  validate :approvals_completed?

  def approvals_completed?
    if self.recommendation.approvals.last.user.type == "SMT"
      return true
    else 
      return false # or a number for needed approvals: self.approvals.count >= 5
    end
  end
end 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...