2014-04-23 45 views
0

合并字段名称在我的用户模型(Rails 3devisemongoid)我开始用一个前缀的某些字段:导轨 - 前缀

class User 
... 

field :usr_feature1, type: Boolean 
field :usr_feature2, type: Boolean 
field :usr_feature3, type: Boolean 
field :usr_feature4, type: Boolean 

... 
end 

我需要一个功能,可用于检查那些字段true/false像这样:

def check_usr "feature_id" 
    # return true if e.g. usr_feature1 is true 
end 

我如何“结合”与字段名称的前缀传递到这个功能呢?我能想出的唯一解决方案是为每个繁琐的领域创建一个“检查函数”,我怀疑有一个更简单的方法来实现这一点。

+1

我不知道Mongoid,但布尔列的Rails通常会产生一个额外的''方法:??''User.first.usr_feature1应该存在,并返回true/false – MrYoshiji

+0

谢谢,我不知道 - 也似乎与'mongoid'一起工作 –

回答

2

这应该做的,假设feature_id是一个数字

def check_usr(feature_id) 
    !!self["usr_feature#{feature_id}"] 
end 
+0

这可能会返回零,但他只想要真/假 – MrYoshiji

+1

添加'!!'照顾 – Santhosh

+0

谢谢,这样做会很好,但是如果'feature_id'是一个字符串(例如该字段名为'usr_feature_something')呢?一个简单的'to_s'会做诡计吗? –