我有3个模特
User
Event
Group
所有这些都有一个位置。如何将上述3与位置相关联。 我应该创建不同的位置表吗? 什么应该是最好的关联模式?
由于每个位置可以有多个事件,组或用户,因此我希望确保位置的唯一性。
此外,我想要一个位置用于多个模型,例如 - 如果有5个用户和来自纽约的5个事件,我只想在我的位置表中创建1个newyork
答案 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的标准做法:
您可以在Location
模型中添加uniquness
validation,以确保每条记录都是独立保存的。