两种不同的配置文件

时间:2011-03-26 07:34:31

标签: ruby-on-rails ruby model profile

假设您有两种不同类型的用户具有不同的个人资料:一个用于音乐艺术家,一个用于听众。每个配置文件都有一些重叠属性和一些不同的属性。您是否应该为每个不同的配置文件分别设或者,您是否应该在用户表中使用二进制数据列来确定用户是否是艺术家?这将如何构建?

2 个答案:

答案 0 :(得分:3)

您可以使用Single Table Inheritance,这可以通过创建模型的子类来实现。

使用Profile列(The name can be overriden)生成type:string模型:

$ rails g model Profile type:string

现在,在profile.rb中,为您的模型创建子类:

class Profile < ActiveRecord::Base
  # Common profile attributes
end

class Artist < Profile
  # Things specific to an artist profile
end

class Listener < Profile
  # Things specific to a listener profile
end

当您创建ArtistListener时,它会与个人资料的类型一起保存在profiles表格中。

例如,如果您执行Artist.create,则会将profiles保存在type='Artist'表中。

当您获取记录时,它将以适当的模型返回,无论是ArtistListener还是通用Profile

有关此技术的更多信息,请查看this question

This blog post也很好地解释了它。

答案 1 :(得分:0)

一个名为Profile的默认值包含公共属性,另外两个(Artistic,Listener)模型具有每个属性的特定属性

在配置文件中,使用字段保存类型(艺术或听众)

只是我的看法。

相关问题