2015-11-07 71 views
0

我只是使用rails g scaffold test name:string attribute:string value:string命令。为什么我不能使用字属性表的列名作为Ruby on Rails?

但是,当我保存填写表格,我得到错误与活动记录器属性列。

根据我研究的gem'safe_attributes'gemfile,它解决了这个问题。我做了安装。

这次在NoMethodError在测试#新

private method 'attribute'呼吁错误。

Extected源(左右线#20):

<% = f.text_field :attribute %>

我怎样才能解决这个问题?你可以帮我吗。

+0

可能的重复[我是否在Rails中使用保留字?](http://stackoverflow.com/questions/6553048/am-i-using-a-reserved-word-in-rails) –

回答

0

的问题是,有已定义的私有方法attribute 而且,由于我们通过method_missing访问模型字段,当您试图打电话Test#attribute你的私有方法

attribute方法的定义是在这里:https://github.com/rails/rails/blob/master/activerecord/lib/active_record/attribute_methods/read.rb#L82

为避免此问题,请不要使用与已定义的方法具有相同名称的模型属性。

+0

我添加了一个链接到方法定义。所以你不能用它作为属性名称。 –

+0

@EmrahYıldırım每种语言和框架都有你不能使用的关键字。你可以追求别的东西,而不是编程或克服它,就是这样。 –

相关问题