Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.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中关联模型_Ruby On Rails - Fatal编程技术网

Ruby on rails 如何在rails中关联模型

Ruby on rails 如何在rails中关联模型,ruby-on-rails,Ruby On Rails,在我的应用程序中,有两种模型:用户模型和事件模型。我想关联两个模型,这样一个用户只能创建单个事件,但可以登录到其他用户创建的许多事件 我尝试过下面的协会,但它对我不起作用 class User < ActiveRecord::Base has_one :event belongs_to :event end class Event < ActiveRecord::Base has_many :users belongs_to :user end class用户

在我的应用程序中,有两种模型:用户模型和事件模型。我想关联两个模型,这样一个用户只能创建单个事件,但可以登录到其他用户创建的许多事件

我尝试过下面的协会,但它对我不起作用

class User < ActiveRecord::Base
  has_one :event
  belongs_to :event
end

class Event < ActiveRecord::Base
  has_many :users
  belongs_to :user
end
class用户

如何在上述条件下关联两个模型。

这些关系指的是基础数据库结构

当您说
属于:event
时,Rails将在
users
表中查找名为
event\u id
的列。您告诉它,每个用户都有一个事件,用户将存储与之关联的事件

当您编写
has_one:event
时,Rails将在数据库的
events
表中查找名为
user\u id
的列。您告诉它,每个用户有一个事件,事件模型负责保存与它关联的用户

如果您希望用户只创建一个事件,并且每个事件都属于一个用户,那么您需要以下内容:

class User < ActiveRecord::Base
  has_one :event
end

class Event < ActiveRecord::Base
  belongs_to :user
end
class用户
如果您希望用户能够参加多个活动,那么您需要一个单独的表来保存这些信息

class EventRegistration < ActiveRecord::Base
  belongs_to :event
  belongs_to :user
end
class EventRegistration

然后,对于要与给定用户连接的每个事件,您将在
事件注册
表中添加一个新行。此表将被称为联接表,因为它的主要用途是在其他表中的记录之间创建关系(这是SQL
join
语句所做的)。

您可能无法单独使用关联来实现这一点。您将需要额外的代码来处理关联……您应该使用has_和_-own_-to_-many来处理与会者关系。签出此文档:@JakeKaad我在所有生产应用程序中都避免这样做。HABTM提取了一整张桌子,这几乎从来都不是我想要的。最终,您的联接表将以逻辑或它自己的数据结束。你想直接处理它。