我使用 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
请给我说清楚。
http://www.robertsosinski.com/2009/01/11/the-difference- Between-ruby-symbols-and-strings/
我认为你的例子不起作用,因为在第一个变体中 First_name 不是字符串。它是可变的
“First_name” - 将是一个字符串
顺便说一句,字符串和符号之间的区别在于,表示单个值的多个符号是唯一的,而字符串则不然。例如:
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
此外,符号相等比较比字符串相等比较更快,因为它们是同一对象,而在字符串中需要比较值而不是对象 ID。
索引 First_name, :sortable => true
这里,rails 将 First_name 视为常量变量而不是列。
所以你可以使用
索引:名字,:可排序=> true
或者
索引 "First_name", :sortable => true
或者
将“First_name”列更改为“first_name”,然后您可以执行此操作
索引first_name, :sortable => true
Ruby 中字符串和符号之间的区别是什么?