Тест, если слово является исключительным или множественным в Ruby on Rails

Я собирался задать этот тот же вопрос, а скорее, чем задают тот же вопрос снова, я просто добавлю некоторую информацию, которую я нашел.

также стоит отметить, что более новое mysqli расширение даже не включает опцию использовать персистентные соединения с базой данных.

я все еще использую персистентные соединения в данный момент, но план переключиться на нестойкий в ближайшем будущем.

17
задан doctororange 26 November 2009 в 05:26
поделиться

3 ответа

В рельсах вы можете выполнить сравнение 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
21
ответ дан 30 November 2019 в 12:27
поделиться

Ни Ruby, ни Rails не поставляются со специальным методом для проверки «множественности» слов.

Как сказал Нунк, самое большее, что вы можете сделать, это реализовать их самостоятельно, сравнивая с word.pluralize и word.singularize . Это даст вам быстрый, дешевый и в целом хороший способ тестирования. Однако иногда он дает сбой.

Если вам нужно больше точности, вам нужно будет использовать гем Ruby Linguistics , который может правильно обрабатывать одежду и одежду (но он тяжелее).

1
ответ дан 30 November 2019 в 12:27
поделиться

В большинстве случаев я никогда не проверяю единственность или множественное число, я просто конвертирую их в единственное число или множественное число, которое мне нужно.

В 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
9
ответ дан 30 November 2019 в 12:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: