我想在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,试图将数据按摩成我想要的格式,但没有取得任何进展。
每个对象people
、family
和friends
都有一个我要保存的属性。
假设每个对象都有一个字段"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",您可能需要使用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.