Не совсем уверен, что вы спрашиваете здесь, но, возможно, это поможет.
Прежде всего, @user.achievements
- это массив, потому что у вас есть несколько достижений, а метод type предназначен для отдельных элементов.@user.achievements
, поэтому это не сработает.Вам нужно будет сделать что-то вроде этого:
@user.achievements.each do |achievement|
# Do stuff here
end
Что касается столбца type
, тип - это зарезервированный столбец в Rails, используемый специально для наследования одной таблицы, где несколько моделей Rails используют одну таблицу базы данных.Таким образом, вы не можете получить к нему доступ напрямую.Я предполагаю, что paths_of_glory
использует STI в некотором роде.Вы можете получить доступ к классу модели с помощью что-то вроде achievement.class
, затем, если вам нужно только имя, вы можете попробовать achievement.class.to_s
.
@user.achievements.each do |achievement|
model = achievement.class # => MyAwesomeAchievementClass
@image = model.picture # You could write some method in the model like this
end