我有一个用户模型与设计和配置文件模型设置。用户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
我的问题是你如何去做这件事? –