Так я пишу приложение со следующими моделями и ассоциациями:Подтверждающий бабушка и дедушка: у двух родителей один и тот же родитель?
class Company < ActiveRecord::Base
has_many :customers, :dependent => :destroy
has_many :goals, :dependent => :destroy
end
class Customer < ActiveRecord::Base
belongs_to :company
has_many :tasks
has_many :goals, through: :tasks
end
class Goal < ActiveRecord::Base
has_many :tasks, :dependent => :destroy
belongs_to :company
has_many :customers, through: :tasks
end
class Task < ActiveRecord::Base
belongs_to :goal
belongs_to :customer
end
Теперь в взгляде, form_for нового задания уже имеют цели или выбранный клиент и другую ассоциацию выбора является отфильтрованным набором на основе на другой модели. Теоретически для пользователя невозможно создать задачу в двух разных компаниях, т. Е. @ Task.goal.company == @ task.customer.company.
Но, по-видимому, хорошая практика заключается в проверке того, что есть только один дедушка и бабушка. Я понимаю, что с помощью Proc.new вы можете проверить, соблюдены ли определенные критерии, но я хочу, чтобы он всегда проверялся, поэтому это не то решение, которое я ищу.
Спасибо.
BTW сообщите мне, если структура модели выглядит высмеивающейся, или если я сделал что-то ясно против конвенции rails.
Это сработало отлично. На всякий случай, если кто-то еще ищет ответ, вам, очевидно, понадобится if/if, чтобы вызвать ошибку: ' ' –
У меня на самом деле есть это в коде, прокрутите его прямо, чтобы увидеть его. :) – Veraticus
Doh! Итак, вы делаете, извините за это = D –