我正在创建一个简单的 Sinatra 应用程序,将Sequel用于我的 ORM。大多数数据围绕用户和事件展开,其中:
- 一个事件可以有许多用户,其中一个是“所有者”。
- 用户可以拥有许多事件,其中一个或多个是他们“拥有”的。
这是我的架构/模型定义的简化版本:
class User < Sequel::Model(:users)
many_to_many :events
one_to_one :event
end
class Event < Sequel::Model(:events)
many_to_many :users
many_to_one :user
end
# provides a link between users and events
# e.g. event.users or user.events
# I am unsure how necessary this is :)
db.create_table :events_users do
primay_key :id
foreign_key :event_id, :events
foreign_key :user_id, :users
end
这使我可以让用户附加到事件或用户附加到的事件,但我很难表达事件的“所有权”。似乎以下伪代码可以工作:
my_user = User.all.first
owned_events = Event.where(user_id = my_user.user_id)
这就引出了两个问题:
- 我目前使用关联的方式有意义吗?
- 如何根据 Sequel 的关联模型表达事件的所有权?