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
然后,对于要与给定用户连接的每个事件,您将在
事件注册
表中添加一个新行。此表将被称为联接表,因为它的主要用途是在其他表中的记录之间创建关系(这是SQLjoin
语句所做的)。您可能无法单独使用关联来实现这一点。您将需要额外的代码来处理关联……您应该使用has_和_-own_-to_-many来处理与会者关系。签出此文档:@JakeKaad我在所有生产应用程序中都避免这样做。HABTM提取了一整张桌子,这几乎从来都不是我想要的。最终,您的联接表将以逻辑或它自己的数据结束。你想直接处理它。