2012-06-28 36 views
0

基本上,我想要生成一個項目,在這種情況下是一個環。我有不同類型的戒指:在Rails中,如何根據第一個屬性自動分配項目的所有屬性

class Ring < ActiveRecord::Base 

    DISPLAY_NAMES [ 'Silver', 'Gold', 'Diamond' ] 

    attr_accessible :description, :display_name, :roll, :bonus, :total, :image, :gold 

end 

有沒有辦法讓戒指的DISPLAY_NAMES隨機化?

我猜想像@ring.display_name = rand(Ring::DISPLAY_NAMES)

有沒有更好的方式來做到這一點?

一旦被發現,是有辦法來設置環的所有其他屬性,如@ring.roll@ring.bonus等。

例如,如果一環出現如銀,可我宣佈在模擬某種if語句,指出戒指是銀色還是其他屬性是bla bla bla?

在此先感謝。慢慢學習,但肯定。

回答

0

您可以通過DISPLAY_NAMES陣列隨機進入做

@ring.display_name = DISPLAY_NAMES.sample 

檢查http://www.ruby-doc.org/core-1.9.3/Array.html#method-i-sample

對於第二個部分,如果值的其餘部分是靜態的,不會改變的話,我只想種子他們在seed.rb

填充數據庫與每個[ 'Silver', 'Gold', 'Diamond' ] 所有值因此,你將有3記錄在每個名稱的數據庫。

之後,你可以做

@ring = Ring.find_by_display_name(DISPLAY_NAMES.sample) 
+0

真棒,謝謝!這給了我一些關於如何解決這個問題的新想法。 – user1467317

+0

我注意到了這個方法的一點。我需要每個戒指創建一個新的ID#。如果我這樣做,它將具有與種子相同的ID。 – user1467317

+0

我想我明白了,謝謝! – user1467317

相關問題