我尝试过但未能从has_many
联接表创建has_many :through
关联,例如
class Child < ActiveRecord::Base
has_many :relationships
has_many :parents, through: :relationships
end
class Parent < ActiveRecord::Base
has_many :relationships
has_many :children, through: :relationships
end
class Relationship < ActiveRecord::Base <------ Join table
belongs_to :child
belongs_to :parent
has_many :schedules
end
class Schedule < ActiveRecord::Base
belongs_to :relationship
end
我之所以这样,是因为孩子可以有很多时间表,但是在监管纠纷或杂乱离婚的情况下,我不希望父母1看到父母2给孩子的时间表。父母当然可以有很多孩子,所以我不能把时间表与父模型放在一起。
同一个父母也可以有许多同一个孩子的日程安排,例如本周一个,下周一个。
我尝试了其他策略,但这种方法最适合数据,所以我想确认是否不可能。
谢谢!
答案 0 :(得分:0)
我认为应该遵循:
class Child < ActiveRecord::Base
has_many :relationships
has_many :parents, through: :relationships
has_many :schedules
end
class Parent < ActiveRecord::Base
has_many :relationships
has_many :children, through: :relationships
has_many :schedules
end
class Relationship < ActiveRecord::Base
belongs_to :child
belongs_to :parent
end
class Schedule < ActiveRecord::Base
belongs_to :child
belongs_to :parent
end
修改强> 上述关系很容易处理,因为它会直接为您提供日程安排
child_object.schedules # All schedules of child
parent_object.schedules # All schedules of parent
您可以通过在Schedule
模型