2016-03-01 36 views
1

型號例如:Rails 3.2:沒有i18n_key的ActiveRecord模型 - 它怎麼可能以及如何修復?

class ModelOne < ActiveRecord::Base 
... 
end 

class ModelTwo < ActiveRecord::Base 
... 
end 

從鐵軌控制檯:

[1] pry(main)> ModelOne.model_name.i18n_key 
NoMethodError: undefined method `i18n_key' for "model_one":String 
[2] pry(main)> ModelTwo.model_name.i18n_key 
=> :model_two 

我該如何解決這個問題?

+0

3.2你正在使用什麼版本的?對於3.2.22.2,我得到了我期望的例如:User.model_name.i18n_key =>:user',但我也得到了'User.model_name.class => ActiveModel :: Name',而你似乎正在獲取一個字符串。你確定你(或者其他一些你使用的gem)沒有重寫'model_name'方法嗎? –

+0

是的,你完全正確。在包含的模塊中找到這個方法。 def model_name table_name [0 ..- 2] end –

+0

太棒了!在那種情況下,我會把它作爲答案。 –

回答

0

my comment,因爲ModelOne.model_name應該回到你ActiveModel::Name類型的對象,而不是String,則ModelOne.model_name方法可能已經被覆蓋。

因此,您必須決定刪除覆蓋(可能更好,除非有很好的理由),或者按照您認爲合適的方式解決它。

+0

非常感謝!我已經刪除了model_name的重寫,並重構了它所用的所有方法。似乎一切工作正常。 –

+0

@VictorKakhnych太棒了!在這種情況下,請考慮將此答案標記爲已接受(點擊分數下方的複選標記「✓」)。 –

相關問題