2013-10-31 24 views
3

我一直在rails中使用普通的Ruby表單對象,但爲了保持我的代碼的組織性,我最終不得不向他們添加大量的名稱空間。所以我有這樣一種形式:Rails - 更改模型的默認參數鍵

class User::Registration::NewForm 
    extend Forwardable 
    extend ActiveModel::Naming 
    extend ActiveModel::Callbacks 
    include ActiveModel::Conversion 
    include ActiveModel::Validations 

    ... 
end 

與此煩惱的是,我的形式param_key成爲一種令人生畏,例如user_registration_new_form

我想以某種方式覆蓋此,我想我需要與model_name和/或param_key方法混亂從ActiveModel::Naminghttp://apidock.com/rails/ActiveModel/Naming/param_key/class)。但我無法讓它工作。

有沒有人能夠成功覆蓋模型的默認param_key?

回答

3

嘎,我終於明白了!您只需要定義一個類model_name方法,並返回ActiveModel::Name對象。

因此,像:

self.model_name 
    ActiveModel::Name.new(User) 
end 
+0

我不得不這樣做':: ::加載ActiveModel Name.new(用戶)''否則未初始化的不斷改革::表:: ::加載ActiveModel Name'。 – Zubin