我使用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
请告诉我。
答案 0 :(得分:5)
http://www.robertsosinski.com/2009/01/11/the-difference-between-ruby-symbols-and-strings/
我认为您的示例不起作用,因为在第一个变体中,First_name不是字符串。这是变量
“First_name” - 将是一个字符串
答案 1 :(得分:2)
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。
答案 2 :(得分:1)
索引First_name,:sortable =>真
这里rails将First_name视为常量变量而不是列。
所以你可以使用
索引:First_name,:sortable =>真的
或
索引“First_name”,:sortable =>真的
或
将First_name列更改为first_name,然后您可以执行此操作
索引first_name,:sortable =>真