2016-05-05 54 views
0

我想在Ruby on Rails中創建一個臨時的對象數組,因此我可以保存一些數據,然後打印出來。我知道,這聽起來很奇怪,但它在我試圖做的宏偉計劃中是有意義的!是否可以在Ruby on Rails中創建一個對象數組?

這裏是我到目前爲止的代碼:

<% peopleArray = Array.new %> 
    <% familyArray = Array.new %> 
    <% friendsArray = Array.new %> 


    <% @subject.list_people.each do |people| %> 
    <% people.people_family.each do |family| %> 
     <% family.find_friends.each do |friends| %> 
     <% peopleArray << people %> 
     <% familyArray << family %> 
     <% friendsArray << friends %> 
     <% end %> 
    <% end %> 
<% end %> 

而是推動這些整個對象爲單獨的陣列,我想從這些三個對象中選擇一個領域,做一個新的對象了這一點,並將其插入到數組中。所以數組中的每個對象都有3個屬性,然後我就可以排序一個。

這是可能的,考慮到Ruby中的所有數組都只是對象的數組,根據我的理解?

我一直在玩這個一會兒,試圖學習ROR,試圖按照我想要的格式按摩數據,而沒有得到任何地方。

每個對象,people,familyfriends有一個我想保存的屬性。

假設每個對象都有一個字段「name」,我想將它添加到一個新對象中。我怎樣才能做到這一點?這是一個嘗試用psuedocode來顯示我想實現的。有可能嗎?

myArray = Array.new //create array 

    <% @subject.list_people.each do |people| %> 
    <% people.people_family.each do |family| %> 
     <% family.find_friends.each do |friends| %> 

     myObj = new Object //create object 

     <% myObj.name1 = people['name'].first %> 
     <% myObj.name2 = family['name'].first %> 
     <% myObj.name3 = friends['name'].first %> 
     <% myArray << myObj %> 
     <% end %> 
    <% end %> 
<% end %> 
    <% myArray.sort(name1) %> //Sort the list based on field name1. 

道歉,如果任何這是顯而易見的,我已經做了很多的研究未能取得多大進展,所以我希望這篇文章在這裏允許的。

+0

當然,但是......你需要一個實際的類,或者一個OpenStruct,或者甚至是一個散列。你不能神奇地讓基礎對象類知道你想要什麼。 –

回答

1

對於您的「對象」,您可能需要使用HashStruct。但是,請使用Hash

myArray = [] 

    <% @subject.list_people.each do |people| %> 
    <% people.people_family.each do |family| %> 
     <% family.find_friends.each do |friends| %> 

     myObj = {} 

     <% myObj['name1'] = people['name'].first %> 
     <% myObj['name2'] = family['name'].first %> 
     <% myObj['name3'] = friends['name'].first %> 

     <% myArray << myObj %> 
     <% end %> 
    <% end %> 
    <% end %> 
    <% myArray.sort_by! { |obj| obj['name1'] } %> //Sort the list based on field name1. 
+0

非常感謝,這真的很有幫助,並教會了我很多關於如何構建這些對象:)。 –

相關問題