2011-06-09 67 views
1

我在我的Rails应用程序System中无意地命名了一个模型,这也是一个ruby核心方法。此模型与另一个模型Project有关系,我试图对其进行索引。思维与红宝石方法名称冲突的狮身人面像索引

理想情况下,我期待我的设置指标是这样的:

define_index do 
    indexes :name, :sortable => true 
    indexes system(:name), :sortable => true, :as => :system_name 
end 

我可以改变模型的名字,但我把那个叫妥协,我不相信我需要。对此有没有很好的解决方法?

红宝石1.8.7,轨3.0.7,2.0.3 thinking_sphinx

回答

1

良好的工作围绕命名变量或用户级别中的类保留字(语言关键字和平台级的方法/班)是首先不是这样做的。

第二个最好的解决方法是使用范围界定::,以确保您呼叫的名字是你想

::system() # calls the actual system method as defined by Ruby 
APPNAME::MODEL_NAME # would call the model defined as `APPNAME::MODEL_NAME` 

我真的不能想到一个解决办法的一个没有命名空间的模型(虽然知道Ruby,它可能存在一些功能 - 只是我自己从来不需要它)。如果只有一半的模型是命名空间的话,它会变得更加混乱。从长远来看,它只是更多的键入记住命名空间一切

+0

你是对的,周围的好工作是永远不会解决它!我刚刚结束了改变模型名称,并不难,但它并不好玩。 – noazark 2011-06-10 01:27:39

相关问题