Ruby on rails Rails,从一个方法设置多个非数据库属性

Ruby on rails Rails,从一个方法设置多个非数据库属性,ruby-on-rails,Ruby On Rails,我是一个新的RoR用户,我遇到了一些严重的ruby逻辑问题。我以前做过一些PHP,知道我想做什么,以及如何用PHP来做,但这花了我几个小时,我还没有在Rails中解决它 我将尝试概述我的预期结果 我有一个数据库模型,sailing,它有用户。每个用户都有自己的生日、使用的语言、姓名等 我想在模型中创建我的业务逻辑。例如,对于一个帆船运动对象,我希望能够在我的视图中调用一个方法来显示帆船运动的总用户,我希望能够显示这些用户使用的前3种语言,并将年龄数据收集到年龄(0-12、13-18、19-29等

我是一个新的RoR用户,我遇到了一些严重的ruby逻辑问题。我以前做过一些PHP,知道我想做什么,以及如何用PHP来做,但这花了我几个小时,我还没有在Rails中解决它

我将尝试概述我的预期结果

我有一个数据库模型,sailing,它有用户。每个用户都有自己的生日、使用的语言、姓名等

我想在模型中创建我的业务逻辑。例如,对于一个帆船运动对象,我希望能够在我的视图中调用一个方法来显示帆船运动的总用户,我希望能够显示这些用户使用的前3种语言,并将年龄数据收集到年龄(0-12、13-18、19-29等)

我一直在使用attr_访问器将非数据库属性添加到我的模型中。下面我将概述一些伪代码,它们定义了我要做的事情

def gather_data
  self.travelling_parties.flat_map do |party|
    party.party_registers.map do |reg|
      reg.user.detailed_user # Returns an array of all my users (working as intended)
      ** Count up users and set to non-database attribute **
      ** Calculate age of users and set three non-database attributes to the largest 3 age groupings **
      ** Count languages and set three non-database attributes to the largest 3 languages
end
Ruby方法似乎不允许我在同一个方法中设置多个变量。当我这样做时,它似乎过早地“回归”

有没有办法在模型中实现这种逻辑?或者我想用Ruby做什么

谢谢

更新

我想我应该更新我的问题,让事情变得更清楚。以下代码在视图中,但我想将其移动到模型中

<% hash = Hash.new(0) %>
<% sailing.primary_language.each { |language| hash[language] += 1 } %>
<%= debug hash %> # Example output, English: 2 French: 3 German:1
<%= hash.max_by{ |k,v| v}[0] %> # Example output, French

#示例输出,英语:2法语:3德语:1
#示例输出,法语
我的想法是将每个字符串设置到哈希中,如果它存在,我将值增加1。我认为Ruby中的最佳实践是在模型中实现这一点,但就我个人而言,我无法理解这一点


干杯。

我很想知道答案,因为现在我直接在视图中执行此逻辑。这可能会给服务器带来压力(我不确定到什么程度),Aptorian,您应该先阅读这些,谢谢Szilard。我快速地看了一眼,但我看不到任何关于如何做我需要的事情的信息。我需要搜索,例如,20个用户,统计他们所说的所有语言,并设置3个变量,最高的3种语言。我是否需要为我需要搜索的每种语言(超过15种)指定一个单独的范围?例如,where('language==Spanish')当这个任务在PHP中很容易完成时,它看起来很麻烦。您能在您的方法中发布没有设置值并提前返回的实际代码吗?您是否正在设置非数据库属性,如this attribute=value,而不是使用@symbol,如@attribute=value?在一个方法中设置多个属性和值是绝对可能的。如果需要,甚至可以从单个方法返回多个值。如果你能发布一个更具体的错误,我明天会添加一个答案