Ruby on rails 如何迭代对象模型的值?

Ruby on rails 如何迭代对象模型的值?,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,我有两个对象Weeklyactivity和Weeklyfood。Weeklyactivity具有名为食物id的属性。而周食品有7种属性,分别称为周一、周二、…、太阳 当用户单击update weekly food时,action方法检索给定一周的每日活动。它还检索所有weeklyfood对象,该对象包含用户每周每天吃的食物的id Weeklyactivities = Weeklyactivity.where(:week => wk) @weeklyfood = Weeklyfood.New

我有两个对象WeeklyactivityWeeklyfood。Weeklyactivity具有名为食物id的属性。而周食品有7种属性,分别称为周一、周二、…、太阳

当用户单击update weekly food时,action方法检索给定一周的每日活动。它还检索所有weeklyfood对象,该对象包含用户每周每天吃的食物的id

Weeklyactivities = Weeklyactivity.where(:week => wk)
@weeklyfood = Weeklyfood.New(forms[:weeklyfood])
现在我想遍历weeklyfood并传输它的数据,其中包含用户每周每天吃的食物的id

我不知道这是否是正确的方法,甚至不知道是否有一种简洁的方法来编写这段代码

Weeklyactivities[:day => 'mon'].food_id = @weeklyfood[:mon]
Weeklyactivities[:day => 'tue'].food_id = @weeklyfood[:tue]
//and son ...
编辑
我收到以下错误:“无法将哈希转换为整数…”

我不确定是否理解该问题

您有一个具有属性
的模型
周活动
(以及其他)

根据您的代码示例,您已经在数据库中为
Weeklyactivity
创建了一周中所有天的行

现在要从表单更新这些行吗

在这种情况下,我有以下建议:

@weeklyfood = Weeklyfood.New(forms[:weeklyfood])
Weeklyactivity.where(:week => wk).each do |weekly_activity|
  if food_id = @weeklyfood[weekly_activity.day.to_sym]
    weekly_activity.food_id = food_id
    unless weekly_activity.save
      # do stuff if not successful
      break
    end
  end
end

我认为你的对象
Weeklyactivity
Weeklyfood
应该分别命名为
Weeklyactivity
Weeklyfood
WeeklyFoods
,分别有表
weekly\u activities
WeeklyFoods

我不仅解决了这个问题,还学到了很多东西。非常感谢。不客气,我想你也可以用稍微短一点的
@weeklyfood[weekly\u activity.day]
来代替
@weeklyfood[weekly\u activity.day.to\u sym]
,但我想确保它能正常工作。