2016-05-05 7 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つのオブジェクトのそれぞれから1つのフィールドを選択し、この外の新しいオブジェクトを作りたいと思い、それを配列に挿入します。したがって、配列内の各オブジェクトは3つの属性を持ち、1つずつ並べ替えることができます。

Rubyのすべての配列は、私が理解しているところからオブジェクトの配列にすぎないので、これは可能ですか?

私はこの間、RORを学び、私が望む形式にデータをマッサージしようとしていて、どこでも手に入れられませんでした。

各オブジェクトpeoplefamilyfriendsには、保存したい属性があります。

各オブジェクトに「名前」というフィールドがあり、そのオブジェクトを新しいオブジェクトに追加したいとします。これどうやってするの?ここでは、私が達成したいことを示すために擬似コードを使用する試みがあります。それは可能ですか?

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、またはハッシュが必要です。あなたは魔法のように基本Objectクラスにあなたが意図するものを知らせることはできません。 –

答えて

1

"オブジェクト"については、HashまたはStructを使用することができます。しかし、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

ありがとう、これは本当に役に立ち、これらのオブジェクトを構築する方法について多くのことを教えてくれました:)。 –

関連する問題