2014-01-26 84 views
1

我正在建立一个功能,当一个人注册一个帐户,我们会自动填充他们的帐户与默认类别和项目,让他们开始。种子db与特定的记录集与关联的记录

此外,他们可以选择购买额外的类别集以随时添加/填充他们的账户。

我想我的选择是:

1)不知何故seeds.rb 2使用)在YAML文件中存储这些记录并加载在帐户创建时 3)存储在数据库中这些记录作为默认设置并克隆/复制它们。

任何帮助赞赏瓦特/代码示例让我开始。

回答

0

这是我会做: 有一个标志数据库,以确定 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

+0

我将如何处理YAML文件中的关联记录?详细我创建类别与某些项目相关联。 –

0

我会做不同的。我会在控制器和模型之间有一个“注册”表单对象。让它在首次构建用户的同时构建一些默认类别和项目。如何隔离这些默认项目的属性取决于它们的复杂程度。如果它们很简单,那么表单对象中的默认散列就足够了,如果它们很复杂,则可以从YML中引入。

当我已经在过去做到了这一点 - 有这需要多个对象创建我有一个RegistrationsController,一个RegistrationForm对象,采取PARAMS和验证一切,还负责知道该怎么保存注册,有时在中间Registrar对象(结构通常),它具有回调的所有逻辑。 registrations_controller初始化一个registrar,发送一条消息register(registration_form)

从长远来看,这会导致职责分离和更简洁的代码。

0

提供的答案是明确的选项,我试验过。但是,我决定走一条不同的路线。我意识到我需要管理这些'模板'记录,而数据库将是最简单的。

1)我在表'is_template'上设置了一列来标记将用于种子其他帐户的记录。

2)创建一个after_create回叫,以使用这些记录对账户进行种子处理。

3)为了让我用amoeba gem,让我复制的记录及其相关记录伟大的工程,因为他们中的一些有has_many关系的事情变得更简单。

到目前为止,这一直非常成功 - 我也为自己和非技术人员更新记录提供了方法。