Я собирался задать этот тот же вопрос, а скорее, чем задают тот же вопрос снова, я просто добавлю некоторую информацию, которую я нашел.
также стоит отметить, что более новое mysqli расширение даже не включает опцию использовать персистентные соединения с базой данных.
я все еще использую персистентные соединения в данный момент, но план переключиться на нестойкий в ближайшем будущем.
В рельсах вы можете выполнить сравнение string # singularize | #pluralize
, чтобы вернуть истинное или ложное значение.
Но я думаю, что из-за природы самого языка, это может потребовать некоторой резервной копии, чтобы быть полностью точным.
Вы можете сделать что-то вроде этого
def test_singularity(str)
str.pluralize != str && str.singularize == str
end
Но чтобы увидеть, насколько точен, я быстро набрал набор слов.
%w(word words rail rails dress dresses).each do |v|
puts "#{v} : #{test_singularity(v)}"
end
word : true
words : false
rail : true
rails : false
dress : false
dresses : false
Я был немного удивлен, так как слово «dress» действительно имеет множественное число правильно, но когда оно проходит через #singularize, оно наталкивается на небольшую загвоздку.
'dress'.pluralize # => dresses
'dress'.singularize # => dres
Ни Ruby, ни Rails не поставляются со специальным методом для проверки «множественности» слов.
Как сказал Нунк, самое большее, что вы можете сделать, это реализовать их самостоятельно, сравнивая с word.pluralize
и word.singularize
. Это даст вам быстрый, дешевый и в целом хороший способ тестирования. Однако иногда он дает сбой.
Если вам нужно больше точности, вам нужно будет использовать гем Ruby Linguistics , который может правильно обрабатывать одежду и одежду (но он тяжелее).
В большинстве случаев я никогда не проверяю единственность или множественное число, я просто конвертирую их в единственное число или множественное число, которое мне нужно.
В Rails 2.3.x это было возможно, написав что-то вроде этого
plural_form = org_word.singularize.pluralize
singular_form = org_word.pluralize.singularize
Работая над этим, легко предоставить рабочую функцию:
require 'active_support'
def is_singular?(str)
str.pluralize.singularize == str
end
%w(word words rail rails dress dresses).each do |v|
puts "#{v} : #{is_singular?(v)}"
end
, которая дает следующий результат:
word : true
words : false
rail : true
rails : false
dress : true
dresses : false
В Rails 4 с данными словами это стало намного проще. Вы можете просто выполнить
plural_form = org_word.pluralize
singular_form = org_word.singularize
, и функция также станет намного проще:
require 'active_support'
def is_singular?(str)
str.singularize == str
end