Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/52.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 过滤掉rails保留字?_Ruby On Rails_Generator_Reserved Words - Fatal编程技术网

Ruby on rails 过滤掉rails保留字?

Ruby on rails 过滤掉rails保留字?,ruby-on-rails,generator,reserved-words,Ruby On Rails,Generator,Reserved Words,作为一名Rails新手,我一直遇到一个难以调试的问题:对模型或列名使用Rails保留字(如:connection) 另外,有时我会跳过我对列名的第一个选择(比如:date),因为我不确定它是否被允许,我宁愿安全 是否有一个gem或一行我可以添加来定制rails生成器,它可以自动检查并警告我 我已经找到了这些名字的一个四年前的列表,但更有用的是,我可以使用modelA.methods和modelB.methods来获得保留字的列表。不过,我不确定这有多全面,是吗?Rails保留字列表的一个问题是,

作为一名Rails新手,我一直遇到一个难以调试的问题:对模型或列名使用Rails保留字(如:connection)

另外,有时我会跳过我对列名的第一个选择(比如:date),因为我不确定它是否被允许,我宁愿安全

是否有一个gem或一行我可以添加来定制rails生成器,它可以自动检查并警告我


我已经找到了这些名字的一个四年前的列表,但更有用的是,我可以使用modelA.methods和modelB.methods来获得保留字的列表。不过,我不确定这有多全面,是吗?

Rails保留字列表的一个问题是,应用程序的不同部分在不同的范围内运行。一些可能适合控制器操作的名称作为模型列不适合,反之亦然。此外,由于gems倾向于将各种代码混合到应用程序中,因此静态保留字列表对您没有多大用处

如果生成器检查了这一点,那就太好了,但它们现在没有,而且可能很难实现,因为生成器与控制器/模型本身在完全相同的环境中运行(即混合在所有相同的gem中)。另外,一些人一旦掌握了模式的诀窍,过了一段时间就离开了生成器,所以对于非生成器世界也有一个答案是很好的

我建议另一种策略。当您询问某个特定的方法名或列名是否是一个好主意时,只需使用
respond\u to?
instance\u方法询问应用程序的该部分是否已被使用。包括?

ActionController::Base.instance_methods.include? :display
=> true
# display is a bad action name
或者使用您的实际控制员:

MyController.new.respond_to? :display
对于型号:

ActiveRecord::Base.instance_methods.include? :status
=> false
# status is an okay column name


这里有一个替代的帮助-。正如上面提到的@sampierson,这个问题很棘手——他的方法也应该有效。通过反复试验,你应该在足够多的冲突之后覆盖大多数案例

MyModel.new.respond_to? :status