Ruby on rails Rails:创建具有多个所属对象的模型

Ruby on rails Rails:创建具有多个所属对象的模型,ruby-on-rails,ruby-on-rails-4,relational-database,relationship,Ruby On Rails,Ruby On Rails 4,Relational Database,Relationship,我找了很长时间,没找到那个问题 user.erb has_many :workouts has_many :result_units workout.erb belongs_to :user has_many :sets set.erb belongs_to :workout has_one :result_unit result_unit.erb belongs_to :user belongs_to :set 1可能的解决方案

我找了很长时间,没找到那个问题

user.erb
     has_many :workouts
     has_many :result_units

workout.erb
   belongs_to :user
   has_many :sets

set.erb
   belongs_to :workout
   has_one :result_unit

result_unit.erb
   belongs_to :user
   belongs_to :set

1可能的解决方案是结果不属于用户。但问题是查询User.workouts.all.set.all.resultunits.all需要多少性能


如何为用户和设置创建新的结果集?

这是一个使用has\u many:通过关联的案例

运行
User.workouts.all.set.all.resultunits.all
将导致执行大量查询。但是,has_many:through将只执行一个查询,并允许数据库优化表之间的连接

class User < ActiveRecord::Base
  has_many :workouts
  has_many :sets, through: :workouts
  has_many :result_units, through: :sets
end
class用户
好的,我没有100%理解你的问题。。但我会尝试一下,如果不对的话,我可以随意否决

class User
  has_many :workouts
  has_many :result_units

  has_many :sets, through: :workouts

  # User.first.workouts
  # User.first.result_units
  # User.first.sets

end

class Workout
  belongs_to :user
  has_many :sets

  # Workout.first.user
  # Workout.first.sets

end

class ResultUnit
  belongs_to :user
  belongs_to :set

  # ResultUnit.first.user
  # ResultUnit.first.set

end

class Sets
  belongs_to :workout
  has_one :result_unit

  # Set.first.workout
  # Set.first.result_unit

end

你必须建立起一个多方面的链条:通过协会。我用一个片段更新了答案。好的,谢谢。我现在可以用User.workouts.first.sets.first.resultunit.create()创建一个新的结果单元了吗?是的,这会起作用(虽然
User
必须在该语句中使用不同的名称,以避免与类名冲突)。我想创建一个成员id为且集合id为的结果单元:)