有可能在RubyonRails中创建一个对象数组吗



我想在RubyonRails中创建一个临时的对象数组,这样我就可以保存一些数据,然后打印出来。我知道,这听起来很奇怪,但在我尝试做的更宏大的方案中,这是有意义的!

这是我到目前为止的代码:

  <% 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,试图将数据按摩成我想要的格式,但没有取得任何进展。

每个对象peoplefamilyfriends都有一个我要保存的属性。

假设每个对象都有一个字段"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.

抱歉,如果这是显而易见的,我已经做了很多研究,但没有取得多大进展,所以我希望这篇帖子能在这里被允许。

对于"Object",您可能需要使用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.

最新更新