Dud*_*mes 22 activerecord ruby-on-rails
如果我有一个用户并且我想要制作不同类型的用户,比如说只有一个电子邮件的普通用户和拥有网站字段的订阅者,我如何让订阅者继承来自只有添加字段的用户的所有内容?
Oli*_*ves 26
您需要创建一个包含所有字段的表,并指定一个类型列.即
create_table :users do |t|
t.string :email
t.string :website
t.string :type
end
Run Code Online (Sandbox Code Playgroud)
然后你可以有像这样的课程
Class User < ActiveRecord::Base
Class Subscriber < User
Run Code Online (Sandbox Code Playgroud)
订阅者将继承Users模型中的所有内容.类型列在那里,以便您可以区分不同的模型.例如使用
Subscriber.all
Run Code Online (Sandbox Code Playgroud)
只会获得订阅者,就好像你没有使用'type'列一样,它也会找到用户.
Fre*_*red 13
您需要单表继承,由Alex Reisner在链接中描述.STI使用单个表来表示从基础模型继承的多个模型.在Rails世界中,数据库模式有一个列,用于指定行所表示的模型类型.添加type在数据库迁移中命名的列有Rails推断该表使用STI,尽管如果在数据模型中指定名称,该列可以是任意名称(请参阅类方法'inheritance_column').请注意,这是type一个保留字.
| 归档时间: |
|
| 查看次数: |
20440 次 |
| 最近记录: |