我有一個用戶模型與設計和配置文件模型設置。用戶has_one個人資料和個人資料屬於用戶。拆分軌道形式到更小的形式
配置文件表單非常長,需要10個以上的字段,我所要做的是創建一個帶有指向配置文件模型的較小部分的鏈接的側欄。
例如,個人資料模型需要仔細閱讀詳細信息,因此當用戶點擊個人詳細信息時,他可以輸入個人詳細信息和地址鏈接,當用戶點擊地址時彈出地址表單。所有這些子窗體將基本上構建輪廓模型。
在創建用戶時,配置文件與用戶一起構建並相應連接。
完成這件事的最好方法是什麼?
我有一個用戶模型與設計和配置文件模型設置。用戶has_one個人資料和個人資料屬於用戶。拆分軌道形式到更小的形式
配置文件表單非常長,需要10個以上的字段,我所要做的是創建一個帶有指向配置文件模型的較小部分的鏈接的側欄。
例如,個人資料模型需要仔細閱讀詳細信息,因此當用戶點擊個人詳細信息時,他可以輸入個人詳細信息和地址鏈接,當用戶點擊地址時彈出地址表單。所有這些子窗體將基本上構建輪廓模型。
在創建用戶時,配置文件與用戶一起構建並相應連接。
完成這件事的最好方法是什麼?
一種方法是爲每個部分創建單獨的控制器。所以,你可能有一個PersonalDetailsController
,AddressesController
,依此類推。
然後,我的做法是創建一個普通的舊的Ruby對象,並與控制器一致地命名。所以,我會有一個PersonalDetailsManager
,AddressesManager
,依此類推。這些「managers`(有些人稱他們爲‘服務’)可能是這個樣子:
# app/managers/personal_details_manager.rb
class PersonalDetailsManager
class << self
def create_details(params)
... logic to create new personal details
end
def update_details(params)
... logic to update personal details
end
end
end
在我的經理人,我總是返回一個哈希值。如果操作成功,散列將包括success: true
。而且,我通常包含一個body
元素,其中包含(a)控制器在進行任何後期處理時需要的任何信息,或者(b)視圖可能需要進行渲染。我經常包含一個errors
元素,以防我想用它來反饋給用戶。
請注意,我把經理放在他們自己的文件夾中。然後,在我的控制,我可能會做這樣的事情:
PersonalDetailsController < ApplicationController
def create
@results = PersonalDetailsManager.create_details(params)
if @results[:success]
... do success routing and/or post processing
else
... do failure routing and/or post processing
end
end
end
有些東西我喜歡這種方法:
聽起來像一個好主意,整體。你有沒有具體的問題? – jvillian
我的問題是你如何去做這件事? –