如何迭代对象模型的值?

时间:2012-11-24 23:47:50

标签: ruby-on-rails activerecord

我有2个对象每周活动每周食物。 Weeklyactivity具有称为 food_id 的属性。和 Weeklyfood 有7个属性叫做 mon,tue,...,sun

当用户点击更新每周食物时,操作方法会检索给定周的每日活动。它还检索所有的每周食物对象,其中包含用户每周吃的食物 id

Weeklyactivities = Weeklyactivity.where(:week => wk)
@weeklyfood = Weeklyfood.New(forms[:weeklyfood])

现在我想迭代每周食物并转移其数据,其中包含用户每周吃的食物的ID。

我不知道这是否是正确的方法,或者即使有一种简洁的方式来编写这段代码。

Weeklyactivities[:day => 'mon'].food_id = @weeklyfood[:mon]
Weeklyactivities[:day => 'tue'].food_id = @weeklyfood[:tue]
//and son ...

修改

我收到以下错误:“无法将哈希转换为整数...”

1 个答案:

答案 0 :(得分:1)

不确定我理解这个问题。

您的模型Weeklyactivity包含weekday(和其他)属性?

根据您的代码示例,您已经在数据库中为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

我认为您的对象WeeklyactivityWeeklyfood应分别命名为WeeklyActivityWeeklyFood,表格分别为weekly_activitiesweekly_foods