【发布时间】:2018-01-15 10:17:04
【问题描述】:
我有一个用户模型,它有一个配置文件。个人资料具有姓名、性别、年龄、出生日期、职称等属性。配置文件中没有必填字段。 用户由管理员仅通过电子邮件地址和密码创建。创建用户时,所有配置文件字段均为零。创建用户后,他可以注册并编辑他的个人资料。当我们转到用户个人资料时,我想显示用户详细信息,如果未设置详细信息,我想显示“未设置”。
首选方法是覆盖配置文件模型中的属性,例如:
def name
super || 'not set'
end
def age
super || 'not set'
end
//and so on
但这样做会产生大量代码重复。
在视图中做<%= @user.name || 'not set'%>也会导致很多代码重复。
我曾考虑将“未设置”作为迁移中所有属性的默认值,但有些字段是整数和日期,因此不可行,而且我们无法添加翻译。
我查看了 ActiveRecord 属性并尝试将默认值设置为我的字符串
class Profile < ApplicationRecord
attribute :name, :string, default: "not set"
但这与在 rails 迁移中分配默认值相同,并且不适用于其他数据类型。
我希望有一种方法可以做类似的事情
def set_default(attribute)
attribute || 'not set'
end
这样的场景一定很常见,但我很惊讶在 stackoverflow 或其他地方没有发现任何与此相关的问题。我google了很多,但找不到解决方案。任何链接也非常感谢。
【问题讨论】:
-
我认为使用 gem 来做这件事有点矫枉过正
-
您的个人资料视图如何?
标签: ruby-on-rails ruby rails-activerecord rails-models