В чем разница между строками и символами в Ruby? - PullRequest
1 голос
/ 08 июля 2010

Я использовал плагин Sphinx для поиска и настройки

define_index do
  indexes First_name, :sortable => true
  set_property :min_prefix_len => 1
end

Здесь First_name - это имя столбца.

Но я получаю сообщение об ошибке «Не удается запустить поисковый демон». И когда я сделал имя столбца в качестве символа, он отлично работает.

define_index do
  indexes :First_name, :sortable => true
  set_property :min_prefix_len => 1
end

Пожалуйста, дайте мне понять.

Ответы [ 3 ]

5 голосов
/ 08 июля 2010

http://www.robertsosinski.com/2009/01/11/the-difference-between-ruby-symbols-and-strings/

Я думаю, что ваш пример не работает, потому что в первом варианте First_name не является строкой.Это переменная

"First_name" - будет строкой

2 голосов
/ 09 июля 2010

Кстати, разница между строкой и символом заключается в том, что несколько символов, представляющих одно значение, являются уникальными, тогда как для строк это не так.Например:

irb(term)> :symbol.object_id
=> 746921
irb(term)> :symbol.object_id
=> 746921


irb(term)> "string".object_id
=> 298788231
irb(main):011:0> "string".object_id
=> 297533890

Кроме того, сравнение на равенство символов выполняется быстрее, чем сравнение на равенство строк, поскольку они представляют собой один и тот же объект, тогда как в строках значения должны сравниваться вместо идентификатора объекта.

1 голос
/ 08 июля 2010

индексы First_name,: sortable => true

здесь rails обрабатывает First_name как постоянную переменную, а не столбец.

так что вы можете использовать

индексы: Имя,: sortable => true

или

индексы "First_name",: sortable => true

или

измените столбец First_name на first_name, а затем вы можете сделать это

указатели first_name,: sortable => true

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...