Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/56.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.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_Database_Database Design_Schema - Fatal编程技术网

Ruby on rails 如何分配体量然后单独编辑

Ruby on rails 如何分配体量然后单独编辑,ruby-on-rails,database,database-design,schema,Ruby On Rails,Database,Database Design,Schema,背景:我有一个运动员应用程序,每个运动员(运动员模型)都可以分配训练(训练模型,通过模型分配训练) 问题:起初,我认为通过与通过训练任务进行大量训练的运动员以及通过训练任务进行大量运动员训练的运动员建立直接联系对我来说很好。然而,如果我这样做的话,如果我给50名运动员分配一项训练,他们都会参考相同的训练记录。我希望教练(分配训练的人)能够将相同的训练分配给50名运动员,但如果他愿意,可以逐个更改(为运动员定制)。有人对我如何处理这个问题有什么建议吗?我是否需要创建50份训练副本并将每个副本分配给

背景:我有一个运动员应用程序,每个运动员(运动员模型)都可以分配训练(训练模型,通过模型分配训练)

问题:起初,我认为通过与通过训练任务进行大量训练的运动员以及通过训练任务进行大量运动员训练的运动员建立直接联系对我来说很好。然而,如果我这样做的话,如果我给50名运动员分配一项训练,他们都会参考相同的训练记录。我希望教练(分配训练的人)能够将相同的训练分配给50名运动员,但如果他愿意,可以逐个更改(为运动员定制)。有人对我如何处理这个问题有什么建议吗?我是否需要创建50份训练副本并将每个副本分配给一个用户,如果我有单独的训练,我是否真的需要通过模型分配训练

谢谢你给我的建议

模式:

  create_table "athletes", :force => true do |t|
    t.string   "name"
    t.string   "username"
    t.string   "password"
    t.string   "sport"
    t.text     "notes"
    t.integer  "coach_id"
    t.datetime "created_at"
    t.datetime "updated_at"
    t.string   "crypted_password"
    t.string   "password_salt"
    t.string   "persistence_token"
  end

  create_table "coaches", :force => true do |t|
    t.string   "name"
    t.string   "username"
    t.string   "password"
    t.string   "address"
    t.string   "city"
    t.string   "state"
    t.string   "zipcode"
    t.string   "phone"
    t.string   "sports"
    t.integer  "experience"
    t.datetime "created_at"
    t.datetime "updated_at"
    t.string   "crypted_password"
    t.string   "password_salt"
    t.string   "persistence_token"
  end

create_table "workout_assignments", :force => true do |t|
    t.integer  "athlete_id"
    t.integer  "workout_id"
    t.date     "date_assigned"
    t.datetime "created_at"
    t.datetime "updated_at"
  end

  create_table "workouts", :force => true do |t|
    t.string   "name"
    t.string   "type"
    t.integer  "coach_id"
    t.text     "description"
    t.datetime "created_at"
    t.datetime "updated_at"
    t.integer  "category_id"
  end
示范协会:

class Athlete < ActiveRecord::Base
  belongs_to :coach
  has_many :workouts, :through => :workout_assignments
end

class Workout < ActiveRecord::Base
  has_many :athletes, :through => :workout_assignments
  belongs_to :category
end

class WorkoutAssignment < ActiveRecord::Base
  belongs_to :workout
  belongs_to :athlete
end

class Coach < ActiveRecord::Base
  has_many :athletes
  has_many :workouts
end
class运动员:训练任务
结束
课堂训练:训练任务
属于:类别
结束
类WorkoutAssignment
使用has和town-to关系(通过互惠关系:通过关系或其他方式)的原因是重用任何一方的对象

您是否考虑过使用富连接模型?您的训练分配模型似乎已经是给定“分配日期”列的模型。理论上,联接模型包含特定于该分配的数据。这样,您将只需要每个常用训练元素的一个副本,并使用训练分配模型存储各个说明

以下是我建议如何实施这一点:

调整训练任务,包括针对运动员的特殊说明。您只需在“训练分配”表中添加一列,我将其称为“特殊说明”,但您可以随时调用它

在新迁移的up方法中:

add_column :workout_assignments, :special_instructions, :string
就这样。不,只需在向运动员/教练显示训练时,确保除了训练说明之外,还显示特殊说明。你可以做一些事情来缓解参考训练任务代替训练的过渡

查看委托、自定义访问器以及在多个关联上使用:include选项。获取如何使这些模型更好地协同工作的灵感。这样做的目的是,您可以在任何时候加载训练任务时立即加载相关的训练

委派是一种允许您将方法传递给其他选项的技术。从本质上讲,这是两种模型的融合。最简单的形式是这样的:

def description
  workout.description
end

然后在自定义访问器中编写一个用于描述训练分配的文件,该文件将获取相关训练的描述,并将其显示在分配的特殊说明旁边

你的训练记录是如何关联的?如果你可以发布一个模式,其中包含你的模型,并且所有的
都有很多的
属于
关系,或者所有的
运动员id
训练id
,以及其他字段,这会很有帮助。好的,我将它们添加到了我原来的帖子中。我正在努力寻找最好的方法来设置它,这样我可以正常地将训练分配给运动员,但也可以同时分配给多个运动员(但之后他们可以单独改变)。谢谢你的帮助!您可能希望将其标记为数据库,而不是ruby on rails。感谢Kandada的标记,希望有人有一些见解,因为数据库不是我的专业设计背景。我希望我能100次投票支持您的答案。。。非常有帮助,这现在完全有意义了,我将致力于实现类似的东西。再次感谢!