я хочу сделать
current_user.allow_????? = true
, где ????? может быть тем, что я хотел, чтобы оно было
?????
Я видел, как это делалось раньше ... просто не помню, где или как это называется.
foo = "bar" current_user.send("allow_#{foo}=", true)
EDIT:
то, что вы просите в комментарии, это совсем другое. Если вы хотите получить константу, вы должны использовать, например,
role = "admin" User.const_get(role)
Это «волшебный метод», и вы реализуете method_missing для вашего объекта current_user. Пример из Шаблоны проектирования
#example method passed into computer builder class builder.add_dvd_and_harddisk #or builder.add_turbo_and_dvd_dvd_and_harddisk def method_missing(name, *args) words = name.to_s.split("_") return super(name, *args) unless words.shift == 'add' words.each do |word| #next is same as continue in for loop in C# next if word == 'and' #each of the following method calls are a part of the builder class add_cd if word == 'cd' add_dvd if word == 'dvd' add_hard_disk(100000) if word == 'harddisk' turbo if word == 'turbo' end end