gpt4 book ai didi

ruby-on-rails - 继承方法: STI? MTI?还是简单的多态关联?

转载 作者:行者123 更新时间:2023-12-04 06:19:20 25 4
gpt4 key购买 nike

我正在实现一个应用程序来管理生产订单。每个订单都有许多工序(阶段),包括打印和弯曲。所有流程都有一些共同的属性,如数量和评论,以及一些特定于阶段的属性:

create_table :stages do |t|
t.integer :number
t.decimal :roll_width
t.decimal :quantity
t.string :comments
t.boolean :finished

t.timestamps
end

create_table :printing_stages do |t|
t.integer :color
t.decimal :technical_card

t.timestamp
end

create_table :bending_stages do |t|
t.decimal :flap_width
t.boolean :seal_distance

t.timestamps
end

为了能够轻松访问它们的公共(public)属性和特定属性,我不确定在此处遵循的正确方法。

如果我使用 STI,我最终会得到一个巨大的单表,因为某些阶段有 10 多个特定属性。

如果我使用多态关联:

class Stage < ActiveRecord::Base
belongs_to :stageable, :polymorphic => true
end

class SlittingStage ActiveRecord::Base
has_one :stage, :as => stageable
end

class PrintingStage ActiveRecord::Base
has_one :stage, :as => stageable
end

然后我将不得不访问打印阶段的注释,例如 printing_stage.stage.comments,恕我直言,它相当麻烦而且不够优雅。

最后,我不确定使用 MTI 的影响和后果。

你能给我一些建议吗?

最佳答案

这位女士说得比我好。如果你跳到 20 分钟左右,那就是你的答案所在。

Make a Mess by Sandi Metz

关于ruby-on-rails - 继承方法: STI? MTI?还是简单的多态关联?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14408536/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com