2012-09-21 17 views
0

首先,我很抱歉如果這太過於新手問題。我只能在業餘時間進行編碼,所以我經常在每個項目上從頭開始重新學習。如何在Rails上爲新用戶設置或分配預定義屬性

我有一個類,Person,與屬性namebirth-date,並gender,這樣我就可以創建,比方說,邁克爾,一個24歲的男性,貝琳達,一個17歲的女性。

但是,還有其他隱藏的預定義屬性應該根據年齡和性別自動分配給這些人。它們不是由創建人員定義的,並且以後不能由用戶編輯。

因此,例如,我們可以有隱藏的屬性favorite-bookfavorite-movie,它們將根據Person是否是18歲以下的男性,男性18-40,或超過40的陽不同;或18歲以下的女性,18-40歲的女性,或40歲以上的女性。

我該怎麼辦?我應該在Person配置文件中創建這些屬性,但不會在界面上顯示它們,並根據輸入自動填寫它們嗎?或者將其他屬性創建爲「類別」,並將其分配給其中的一個?請記住,我必須經常在界面中使用這些信息,而且人們應該隨着年齡的增長自動更改組。

另外,這樣做看起來像在Rails中?有人告訴我「使用哈希」,但我不清楚這種方法的細節。

回答

1

我認爲你的第一個建議應該工作得很好「在Person配置文件中創建這些屬性,但不會在接口上顯示它們,並根據輸入自動填充它們」。除非這些額外的數據如果是精細的或巨大的,那麼將其存儲在Person模型中應該沒問題。類似這樣的實現將如下所示:

class Person < ActiveRecord::Base 
    after_validation :assign_favorites, :on => :create 

    def assign_favorites 
    if self.age < 18 && self.sex == 'male' 
     self.favorite_book = 'Hunger Games' 
    elsif self.age >= 18 && self.sex == 'male' 
     ... 
    end 
    end 
end 
+0

感謝您的回覆。實際上有超過30個屬性,但我不認爲這是一個問題,因爲它們只有一個單詞,這是我只需要做一次。這種方法令我擔憂的是,我不知道隨着人們年齡的增長,如何保持自動更新。也許如果不是'創建'它發生在視圖上。 –

+0

您可以刪除':on =>:create'部分,這意味着它將在創建或更新時運行。然後,您可以設置一個cronjob來每日迭代所有記錄並保存它們。如果它們改變,那麼每天將重新分配一次這些值。 – weexpectedTHIS

相關問題