Есть модели с has_many through
имеет ассоциации:Как проверить наличие связанных записей в случае has_many через: association?
class Event < ActiveRecord::Base
has_many :event_categories
has_many :categories, through: :event_categories
validates :categories, presence: true
end
class EventCategory < ActiveRecord::Base
belongs_to :event
belongs_to :category
validates_presence_of :event, :category
end
class Category < ActiveRecord::Base
has_many :event_categories
has_many :events, through: :event_categories
end
вопрос с назначая event.categories = []
- он сразу же удаляет строку из event_categories
. Таким образом, предыдущие ассоциации необратимо уничтожаются, и событие становится недействительным.
Как подтвердить наличие записей в случае has_many, through:
?
UPD: внимательно прочитайте предложение, помеченное в полужирным шрифтом перед ответом. Rails 4.2.1
Из документов - «Проверяет, все ли соответствующие объекты или объекты действительны» и «Эта проверка не будет работать, если ассоциация не была назначена. Если вы хотите убедиться, что ассоциация присутствует и гарантирована, что она действительна, вам также необходимо использовать validates_presence_of. '. Но даже комбинация 'validates_presence_of: categories' и' validates_associated: categories' НЕ предотвращает немедленное удаление из таблицы 'event_categories' при назначении' event.category = [] ' – yurko