嘿我怎样才能在我的MongoID模型中创建一个方法,该方法将返回名称字段的用户名字段值未设置。
因此,如果我有一个用户...而且user.name是Thomas,那么在调用user.name时你会得到Thomas。如果未设置user.name并且您调用user.name,则它将在仍调用user.name时返回用户的用户名。我想这样做是为了安全起见。有可能吗?
答案 0 :(得分:0)
如果我理解你的问题,你可以用以下内容覆盖name
访问者:
class User
include Mongoid::Document
field :username, :type => String
field :name, :type => String
def name
# You can access the fields by name using `model[field_name]`
# or `model.attributes[field_name]`
self['name'] || self['username']
end
end
或者,您可以将lambda用作:name
的默认值:
class User
include Mongoid::Document
field :username, :type => String
field :name, :type => String, :default => lambda { self.username }
end
在任何一种情况下,如果设置u.name
,:name
将为您提供:username
字段,否则为user.name == ''
。
如果"未设置"可能意味着user.name.nil?
而不是def name
self['name'].present?? self['name'] : self['username']
end
,那么你就可以修改第一种方法:
{{1}}