rails中的关联模型混淆

时间:2015-11-08 18:19:05

标签: ruby-on-rails

我有3个模特

User
Event
Group

所有这些都有一个位置。如何将上述3与位置相关联。 我应该创建不同的位置表吗? 什么应该是最好的关联模式?

由于每个位置可以有多个事件,组或用户,因此我希望确保位置的唯一性。

此外,我想要一个位置用于多个模型,例如 - 如果有5个用户和来自纽约的5个事件,我只想在我的位置表中创建1个newyork

1 个答案:

答案 0 :(得分:0)

如果您有一组预定义的位置(EG New York),您可以将它们放入自己的模型中:

#app/models/location.rb
class Location < ActiveRecord::Base
   has_many :users
   has_many :events
   has_many :groups

   validates :x, uniqueness: true
end

#app/models/user.rb
class User < ActiveRecord::Base
   belongs_to :location
end

#app/models/event.rb
class Event < ActiveRecord::Base
   belongs_to :location
end

#app/models/group.rb
class Group < ActiveRecord::Base
   belongs_to :location
end

以上内容可让您拨打以下电话:

@location = Location.create({name: "New York"})

@event = Event.create({location: @location})
@group = Group.create({location: @location})
@user = User.create({location: @location})

-

  

此外,我想要一个位置用于多个模型

这是ActiveRecord associations的标准做法:

enter image description here

您可以在Location模型中添加uniquness validation,以确保每条记录都是独立保存的。