我正在编写我的第一个 Ruby On Rails 应用程序——一个用于封闭式住宅社区的网站。
社区区域由空地组成,在建成地块中有一个或多个房屋。地块只有一个所有者,但地块中的多个房屋可以各自拥有不同的所有者。有不同角色的选举产生的办公室负责人(在居民协会中)和物业管理人员等。最终会有用户组(仅限业主或仅限租户或混合等)。
Owner 和 Tenant 往往是完全不同的,因此我将它们保留为单独的类。同样,他们的家庭成员也往往不同 - OwnerFamilyMember 和 TenantFamilyMember 类。
我的第一个设计是有一个单一的用户和一个角色和一个分配模型——角色变得太多了。因此,我如上所述拆分了用户模型(我不想使用 STI 或多态关联,我想先把它弄好)。
模型类:
# All classes below inherit from ActiveRecord::Base, removed other attributes for compactness
class Owner
has_many :plots
has_many :houses
has_many :owner_family_members
end
class Tenant
belongs_to :house # declare house_id in table
has_many :tenant_family_members
end
class Staff ...
class Plot
belongs_to :owner # declare owner_id in table
end
class House
belongs_to :owner # declare owner_id in table
end
class OwnerFamilyMember
belongs_to :owner # declare owner_id in table
end
class TenantFamilyMember
belongs_to :tenant # declare tenant_id in table
end
- 租户或业主居住在房屋中。
- 业主或租户的家庭成员将参与社区,但他们依赖于主要业主或租户的某些特权行动
我知道,通过这种设计,不同的用户模型具有隐含的角色,并且可以根据需要具有额外的子角色 - 业主可以是居民协会的财务主管,租户可以领导一个节水团体等。我预计角色要进一步发展,因此我认为保留多个用户模型会更好。
我在正确的轨道上吗?我在这个食谱中混淆了错误的东西吗?热衷于听取任何可以帮助我更好地理解这一点的反馈、概念或具体实施。
我了解数据库概念、OO 编程,但我是生产级数据库设计或 RoR 应用程序的新手。感谢您阅读这篇长文。- 贾亚万特