Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 铁路协会规划_Ruby On Rails_Activerecord_Ruby On Rails 4_Associations - Fatal编程技术网

Ruby on rails 铁路协会规划

Ruby on rails 铁路协会规划,ruby-on-rails,activerecord,ruby-on-rails-4,associations,Ruby On Rails,Activerecord,Ruby On Rails 4,Associations,我仍在使用Rails,我有一个关于关联的问题 我正在建立一个健身网站,我想让用户跟踪他们的训练。我有点不确定协会应该怎么办。下面是我目前拥有的 锻炼由一组练习组成。用户将创建一个训练对象,将所有练习保存在一起,这样就不必每次都重复创建过程。除此之外,我不希望他们必须重新创建练习,将其添加到新的训练中。因此,锻炼和锻炼都属于用户 我的计划是这样的 Workout belongs_to :user has_many :exercises, :through => :routines Exer

我仍在使用Rails,我有一个关于关联的问题

我正在建立一个健身网站,我想让用户跟踪他们的训练。我有点不确定协会应该怎么办。下面是我目前拥有的

锻炼由一组练习组成。用户将创建一个训练对象,将所有练习保存在一起,这样就不必每次都重复创建过程。除此之外,我不希望他们必须重新创建练习,将其添加到新的训练中。因此,锻炼和锻炼都属于用户

我的计划是这样的

Workout
belongs_to :user
has_many :exercises, :through => :routines

Exercise
belongs_to :user
has_many :workouts, :through => :routines

Routines
belongs_to :workout
belongs_to :exercise

User
has_many :workouts
has_many :exercises
//the rest of the user associations

我认为这是正确的,但拥有属于用户的锻炼和锻炼对我来说似乎有些多余。这是最好的设置还是有其他方法来关联这些东西?非常感谢您的帮助。

我知道没有必要在那里设置
例程。您需要调整您的关联。
像这样怎么样

Workout

belongs_to :user
belongs_to :exercise

User

has_many :exercises
has_many :workouts :through => exercises

Exercise

has_many :workouts
belongs_to :user

就我个人而言,这似乎更符合逻辑:

class User

  has_many :workouts

class Workout

  belongs_to :user
  has_and_belongs_to_many :exercises

class Exercise

  has_and_belongs_to_many :workouts
在我看来,练习只属于一项或多项训练,与使用者关系不大。因此,我将省略用户和练习之间的关联

由于训练可以共享类似的训练,因此它们之间存在多对多关系。通常,在这些情况下,我会选择has\u many,through关系,但由于您没有提到连接模型has\u和\u-belies\u-to\u的可能附加属性,所以使用连接表的多个属性就足够了


编辑:你想得越多,关联可能就越复杂。例如,一项训练实际上可以属于多个用户。我想最好去画板上画每个模型的关联和属性。

查看这篇文章:我刚找到它!它可能会帮助你!我唯一关心的是,我希望用户能够将他们已经创建的练习添加到其他例程中,而无需重新创建。这允许我这么做吗?老实说,定义有点混乱。日常活动和锻炼本质上不一样吗?锻炼包括一系列的锻炼,对吗?无论如何,这些练习可以用于多种例行程序。使用嵌套资源,您可以在训练中添加或删除练习。还有一点需要注意的是,一个用户可以有许多训练,但一个训练也可以属于许多用户。我认为多个用户可能希望在他们的训练中使用相同的训练,但不一定是相同的训练。每个用户都会创建自己的训练,因此理论上一个训练可以属于许多用户,但实际上不会这样使用。例行程序部分是作为我在锻炼和锻炼之间的桥梁加入的,因为它将是多对多的关系。这些例行程序将成为该协会的最终目标。