2013-07-22 2 views
0

У меня есть ПОЛЬЗОВАТЕЛИ, КАТЕГОРИИ И РАБОЧИЕ ГРУППЫ. Пользователь принадлежит к рабочей группе: user.workgroup_id. Категория относится к рабочей группе: category.workgroup_id. WORKGROUP имеет много пользователей и категорий.Rails 4 - Проверка на основе нескольких моделей

Мне нужно написать модельную проверку, которая запрещает присвоение категории.workgroup_id, если у существующего пользователя нет этого конкретного workgroup_id, с сообщением об ошибке вроде: «Извините, но никто не принадлежит к этой рабочей группе, поэтому вы не можете его назначать к этой категории. "

Любые советы? Заранее спасибо.

ответ

1
class Category < ActiveRecord::Base 
    belongs_to :workgroup 

    validate :workgroup_not_empty, if: Proc.new { workgroup_id_changed? } 

    def workgroup_not_empty 
    if workgroup.users.count == 0 
     errors.add(:workgroup_id, "Sorry, but no one belongs to that workgroup, so you may not assign it to this Category.") 
    end 
    end 
end 
+0

Спасибо - я пробовал это, но получил следующую ошибку: 'undefined method changed? для 10: Fixnum' –

+0

Извините, я отредактировал ответ соответственно, это была опечатка. –

+0

Спасибо - я также изменил его, чтобы проверить: on =>: create /: update ... это не хорошая практика? –

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