在rails中为用户模型创建配置文件

问题描述:

我的rails应用程序中有一个用户模型。它只有一个名称属性以及通过Devise登录的电子邮件&。我想为用户创建一个模型配置文件。我应该如何创建它。通过将配置文件属性添加到现有的用户模型或创建模型配置文件并向其添加belongs_to关联。在rails中为用户模型创建配置文件

+0

就个人而言,如果配置文件数据相对稳定,我会创建一个配置文件模型并向它添加belongs_to,或者可能为用户添加has_one。 – thisfeller 2012-07-22 18:44:11

那么,这取决于你的要求。

如果用户只能有一个profile,并且您只是要添加一些与user相关的属性,则没有理由为其创建新的类。

但是,即使用户只能拥有一个配置文件,也可能需要执行一些normalisations。如果是这样,您可以从users表中删除一些属性以创建表profiles,并且您将拥有一对一的关系。

class User < ActiveRecord::Base 
    has_one :profile 
end 

class Profile < ActiveRecord::Base 
    belongs_to :user 
end 

那么......根据您的要求,您可能会遇到用户可能拥有多个配置文件的情况。如果是这样的话:

class User < ActiveRecord::Base 
    has_many :profiles 
end 

class Profile < ActiveRecord::Base 
    belongs_to :user 
end 

总之,没有对错之分......它取决于您的要求,以及您的设计决定。

+0

是否可以创建一个配置文件模块并将其包含到用户模型中,因为我想为不同类型的用户创建配置文件,例如学生,老师,校长,哪些会有一些共同的属性和一些彼此不同? – Metal 2012-07-22 19:12:27

+0

不是真的......你可以在其他情况下使用模块和继承。例如,如果你有以下类:'学生','老师','工作人员'等,他们都有comum中的东西,比如'name','age'等等,并且与其他表的关系是不同。在这种情况下,您可以使用模块或继承来避免在每个类中添加所有comum属性。然而,在你的情况下,我不认为你需要它..你可以添加一个属性'type'来指定访问级别(我认为它是你想要的)。所以,如果current_user有类型的学生,你可以阻止一些动作... – gabrielhilal 2012-07-22 19:42:21

+0

但是,如果'student','teacher'和'principal'具有不同的行为,那么......你应该考虑不同的类...... – gabrielhilal 2012-07-22 19:44:27

向您的用户模型添加更多属性会让您的用户对象有点沉重,因为您经常会调用该对象,因此这不是最好的想法。例如,要验证用户,您不需要加载配置文件属性,如current_user helper所在的位置或出生日期。因此,最好是在一个单独的模型中提取配置文件属性,并采用gabreilhilal的方法。