Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.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/8.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 Rails连接表或HABTM关联_Ruby On Rails_Database_Activerecord_Associations - Fatal编程技术网

Ruby on rails Rails连接表或HABTM关联

Ruby on rails Rails连接表或HABTM关联,ruby-on-rails,database,activerecord,associations,Ruby On Rails,Database,Activerecord,Associations,在我正在构建的应用程序中,我希望有事件。然后,人们可以通过创建团队、直接注册活动(无团队)或加入现有团队来注册活动。我最初将其设置为事件有多个团队,团队有多个用户,用户属于团队和事件。但是,如果注册用户想要参加另一个活动(或参加另一个活动的团队),以及尝试在控制面板中列出@user.events或@user.teams之类的内容时,我会预见到问题。有人建议使用联接表并创建一个注册模型/迁移来联接这些表。我可以拥有属于事件、团队和用户的加入模型吗?我这样做完全错了吗?您可以创建一个连接模型注册,并

在我正在构建的应用程序中,我希望有事件。然后,人们可以通过创建团队、直接注册活动(无团队)或加入现有团队来注册活动。我最初将其设置为事件有多个团队,团队有多个用户,用户属于团队和事件。但是,如果注册用户想要参加另一个活动(或参加另一个活动的团队),以及尝试在控制面板中列出@user.events或@user.teams之类的内容时,我会预见到问题。有人建议使用联接表并创建一个注册模型/迁移来联接这些表。我可以拥有属于事件、团队和用户的加入模型吗?我这样做完全错了吗?

您可以创建一个连接模型注册,并将“属于”设置为多态,以便它可以引用任何类型的对象。下面是一个例子:

models/team.rb:

class Team < ActiveRecord::Base
  has_many :registrations, :as => :owner
end
现在,您可以查看注册情况,查看谁已注册参加您的活动。您可以使用has\u many:events、:through=>:registrations、:source=>:owner返回用户,但请注意,还有一些限制,如has\u many:owner、:through=>:registrations,这些限制在插件中解决,如

class User < ActiveRecord::Base
  has_many :registrations, :as => :owner
end
class Registration < ActiveRecord::Base
  belongs_to :owner, :polymorphic => true
end
class Event < ActiveRecord::Base
  has_many :registrations
end
...
t.belongs_to :owner, :polymorphic => true
t.belongs_to :event
...