2014-01-26 111 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關係的事情變得更簡單。

到目前爲止,這一直非常成功 - 我也爲自己和非技術人員更新記錄提供了方法。