0

我希望能够使用 Ruby on Rails 为健身房创建锻炼计划。锻炼计划将包含一个名称,他将有 X 天,其中将有 X 次锻炼。

这就是锻炼计划的样子

名称:初学者锻炼

  • 第 1 天
    • 练习 1
    • 练习 2
    • 练习 3
  • 第 2 天
    • 练习 1
    • 练习 2
  • 第 3 天
    • 练习 1
    • 练习 2
    • 练习 3
    • 练习 4

现在练习将来自给定的池(由我输入),用户可以从中选择(通过复选框)。

这是创建新锻炼计划的简化形式:

新的锻炼计划表

我现在可以有固定的天数,动态添加天数将是我的下一步,但现在这并不重要。

现在我有3个模型。计划、计划日和锻炼。关系是

# == Schema Information
#
# Table name: plans
#
#  id         :integer          not null, primary key
#  name       :string(255)
#  created_at :datetime
#  updated_at :datetime
#

class Plan < ActiveRecord::Base

    has_and_belongs_to_many :plan_days

    accepts_nested_attributes_for :plan_days
end

# == Schema Information
#
# Table name: plan_days
#
#  id         :integer          not null, primary key
#  name       :string(255)
#  created_at :datetime
#  updated_at :datetime
#

class PlanDay < ActiveRecord::Base

    has_and_belongs_to_many :exercises

    accepts_nested_attributes_for :exercises
end

# == Schema Information
#
# Table name: exercises
#
#  id          :integer          not null, primary key
#  name        :string(255)
#  created_at  :datetime
#  updated_at  :datetime
#

class Exercise < ActiveRecord::Base

    has_and_belongs_to_many :plan_days
end

我真的无法接近像上面这样的表格,我认为我的关系可能不对。我会很感激任何帮助,谢谢。

4

2 回答 2

0

查看您的建模:

  1. 持续数天。我不认为这是一个必要的模型。它可以简单地融入运动中的一个领域。锻炼可以进行,而且只能在某个日历日进行。

  2. 你不应该在这里使用 has_and_belongs_to_many 关系。一个练习必须属于某个计划,这很简单。

  3. 有些东西应该与客户有关。我更喜欢使用计划。那么练习只与计划有关。

现在让我们再次尝试建模

# Customer has many Plans
Model: Plan
  - Name
  - Start(date)
  - End(date)
  - Customer(id)

# Plan has many exercises
Model: Exercise
  - Name
  - Date
  - Plan(id)      

在此模型下,显示日常安排很容易。例如,如果您想显示第一天的练习,您可以搜索此计划下的练习,日期为第一天或此计划。

于 2013-02-20T07:10:28.000 回答
0

我找到了 Ryan Bates 的截屏视频,这几乎正是我所需要的http://railscasts.com/episodes/196-nested-model-form-revised

于 2013-02-21T23:07:04.660 回答