我正在建立一个功能,当一个人注册一个帐户,我们会自动填充他们的帐户与默认类别和项目,让他们开始。种子db与特定的记录集与关联的记录
此外,他们可以选择购买额外的类别集以随时添加/填充他们的账户。
我想我的选择是:
1)不知何故seeds.rb 2使用)在YAML文件中存储这些记录并加载在帐户创建时 3)存储在数据库中这些记录作为默认设置并克隆/复制它们。
任何帮助赞赏瓦特/代码示例让我开始。
我正在建立一个功能,当一个人注册一个帐户,我们会自动填充他们的帐户与默认类别和项目,让他们开始。种子db与特定的记录集与关联的记录
此外,他们可以选择购买额外的类别集以随时添加/填充他们的账户。
我想我的选择是:
1)不知何故seeds.rb 2使用)在YAML文件中存储这些记录并加载在帐户创建时 3)存储在数据库中这些记录作为默认设置并克隆/复制它们。
任何帮助赞赏瓦特/代码示例让我开始。
这是我会做: 有一个标志数据库,以确定 Store中的数据在yaml
文件(例如,db/users.yml
),并做到:
def populate_user
user.update_attributes(YAML.load(Rails.root + 'db/users.yml')) if first_sign_in == 0
end
然后你就可以将它添加到after_create
挂钩,所以它只被称为user
我会做不同的。我会在控制器和模型之间有一个“注册”表单对象。让它在首次构建用户的同时构建一些默认类别和项目。如何隔离这些默认项目的属性取决于它们的复杂程度。如果它们很简单,那么表单对象中的默认散列就足够了,如果它们很复杂,则可以从YML中引入。
当我已经在过去做到了这一点 - 有这需要多个对象创建我有一个RegistrationsController
,一个RegistrationForm
对象,采取PARAMS和验证一切,还负责知道该怎么保存注册,有时在中间Registrar
对象(结构通常),它具有回调的所有逻辑。 registrations_controller
初始化一个registrar
,发送一条消息register(registration_form)
。
从长远来看,这会导致职责分离和更简洁的代码。
提供的答案是明确的选项,我试验过。但是,我决定走一条不同的路线。我意识到我需要管理这些'模板'记录,而数据库将是最简单的。
1)我在表'is_template'上设置了一列来标记将用于种子其他帐户的记录。
2)创建一个after_create
回叫,以使用这些记录对账户进行种子处理。
3)为了让我用amoeba gem,让我复制的记录及其相关记录伟大的工程,因为他们中的一些有has_many
关系的事情变得更简单。
到目前为止,这一直非常成功 - 我也为自己和非技术人员更新记录提供了方法。
我将如何处理YAML文件中的关联记录?详细我创建类别与某些项目相关联。 –