2014-04-23 63 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'會做詭計嗎? –