Ассоциация тегов является двунаправленной (has_many: through), поэтому @post.tags.count
получает количество тегов, а @tag.posts.count
- количество сообщений.Проверка в модели Post.Добавив настраиваемую проверку в модель Post, вы можете выполнить все ограничения записей и тегов, прежде чем отдельный объект будет зафиксирован в базе данных.
Этот подход может работать для вас.Идея состоит в том, что публикация перед фиксацией проверяет связанные с ней теги (хотя и теги), а также проверяет себя.Тег подтверждает себя и подразумевает, что сообщение будет недействительным, если в теге слишком много сообщений.Возможно, вам придется настроить имена для того, как вы установили теги.
class Post
acts_as_taggable
validates_associated :taggings
validates :database_limits
private
def database_limits
self.errors.add(:name, "too many tags") if self.tags.count > 100
end
end
class Taggings
validates_associated :tags
end
class Tag
validates :database_limits
private
def database_limits
self.errors.add(:name, "too many posts for this tag") if self.posts.count > 100
end
end