2015-11-07 34 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每種語言和框架都有你不能使用的關鍵字。你可以追求別的東西,而不是編程或克服它,就是這樣。 –

相關問題