【发布时间】:2016-08-31 13:46:57
【问题描述】:
我想在 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、family 和 friends 每个对象都有一个我要保存的属性。
假设每个对象都有一个字段“名称”,我想将它添加到一个新对象中。我怎样才能做到这一点?这是使用伪代码的尝试来展示我希望实现的目标。有可能吗?
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.
抱歉,如果这很明显,我做了很多研究,但未能取得很大进展,所以我希望这篇文章可以在这里发布。
【问题讨论】:
-
当然,但是……你需要一个实际的类,或者一个 OpenStruct,甚至是一个哈希。你不能神奇地让 Object 基类知道你想要什么。
标签: ruby-on-rails arrays ruby sorting object