gpt4 book ai didi

ruby-on-rails - 在 Rails 中扩展模型

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

我正在尝试在 Rails 中扩展模型。

型号 User用途表users在具有字段 :username 的数据库中, :password .

class User < ActiveRecord::Base
end

模型 super 用户使用表 super_users在带有字段的数据库中 :user_id , :name :
class SuperUser < ActiveRecord::Base
belongs_to :user
end

我要 SuperUser成为 User 的扩展名以便能够做到这一点:
SuperUser.create(:name => "foo", :username => "bar", :password => "foobar")

或者当我获取数据以获得这样的东西时
> s = SuperUser.find 1
> s.username
> "bar"

有谁知道我怎么能做到这一点?

最佳答案

您需要考虑两种可能的模型扩展模式。其中之一,单表继承内置于 Rails 中,是 well documented .另一种模式,多表继承 ,这在 Rails 中令人惊讶地不太受欢迎。需要自己实现或者少用popular gem为了它。

我认为,MTI 在 Rails 中没有得到很好支持的原因之一与性能有关。例如,即使是简单的 User.find 1应该是在两个表中查找。

您在问题中提出的问题(有两张 table )是 MTI。但为什么在这种简单的情况下不是 STI 呢?是 UserSuperUser由于彼此偏离,您担心节省空间并为它们使用两个单独的表?

对我来说,它看起来像一个 users表,并添加 type列到它。

add_column :users, :type, :string

现在:
class User < ActiveRecord::Base
end

class SuperUser < User
end

它只是有效。

关于ruby-on-rails - 在 Rails 中扩展模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32767298/

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