【发布时间】:2019-01-21 05:31:42
【问题描述】:
我正在创建一个 Web 应用程序,该应用程序允许用户通过分配和购买零件的小时数来track/log 他们的车辆restoration/maintenance 成本。我需要帮助正确设置数据库架构和模型关系。请记住,虽然我知道这可以简化,但我需要至少有 5 个模型来完成这项任务。
这是我到目前为止的想法。
(图片中的VSP是Vehicle_Service_Part的缩写,旨在成为模型Vehicle、Service和Part之间的“3 ID属性表”链接。)虽然没有显示在架构代码中,但每个类都会自动创建具有自己唯一的主键:id。
我还差 2 分才能发布图片...请参阅link 的数据模型
这是我的 Rails 架构:
ActiveRecord::Schema.define(version: 2019_01_21_042407) do
create_table "owners", force: :cascade do |t|
t.string "name"
t.string "street"
t.string "city"
t.string "state"
t.integer "zip"
t.string "phone_number"
t.string "email"
end
create_table "parts", force: :cascade do |t|
t.string "part_number"
t.string "part_name"
t.integer "cost"
t.string "part_type"
t.integer "quantity"
end
create_table "services", force: :cascade do |t|
t.string "date"
t.string "work_description"
t.integer "car_miles"
t.integer "work_hours"
end
create_table "vehicle_service_parts", force: :cascade do |t|
t.integer "vehicle_id"
t.integer "service_id"
t.integer "part_id"
end
create_table "vehicles", force: :cascade do |t|
t.string "make"
t.string "model"
t.integer "year"
t.string "vin"
t.string "engine"
t.string "car_type"
t.string "color"
end
create_table "vendors", force: :cascade do |t|
t.string "name"
t.string "contact"
t.string "website"
t.string "location"
end
end
这是我的模型关系:
class Owner < ApplicationRecord
has_many :vehicles
has_many :vehicle_service_parts, through: :vehicles
end
class Vehicle < ApplicationRecord
belongs_to :owner
has_many :vehicle_service_parts
has_many :services, through: :vehicle_service_parts
has_many :parts, through: :vehicle_service_parts
end
class Service < ApplicationRecord
has_many :vehicle_service_parts
has_many :vehicles, through: :vehicle_service_parts
has_many :parts, through: :vehicle_service_parts
end
class Part < ApplicationRecord
belongs_to :vendor
has_many :vehicle_service_parts
has_many :vehicles, through: :vehicle_service_parts
has_many :services, through: :vehicle_service_parts
end
class VehicleServicePart < ApplicationRecord
belongs_to :vehicle
belongs_to :service
belongs_to :part
has_many :owners, through: :vehicles
has_many :owners, through: :parts
end
class Vendor < ApplicationRecord
has_many :parts
has_many :vehicle_service_parts, through: :parts
end
根据我的模型和他们之间的关系,我最终希望完成一些事情,其中一些我认为可以使用给定的关系设置来完成,而其他一些我很遗憾没有太多的知识或技能从哪里开始。
车主可以拥有多辆具有不同记录集的车辆。
车辆可以使用一个零件拥有多个服务,并最终从多个服务中获得多个零件。
模型类
Part包含一个属性:part_type,该属性将被分配一个来自分类列表的字符串,包括但不限于“引擎”、“悬架”、“刹车”...等。允许查看者查看给定车辆:part_type "engine"的所有总零件/成本/小时/服务。
1234563 /p>
是否可以完成 4. 同时在一项服务中创建/添加多个部分?例如,换油将被视为
Service类的单个实例,但将与Part类的多个实例相关联,包括机油过滤器实例和机油实例。机油滤清器和机油都是两个不同的部件,但位于一个服务实例下。查看者可以看到汽车上所有不同的零件以及总成本。
查看者可以查看从其购买汽车零件的所有供应商。
我们将不胜感激任何帮助、指导或建议!
【问题讨论】:
标签: ruby-on-rails database sqlite activerecord data-modeling