Я использую Ruby on Rails 3 и пытаюсь отобразить хеш (key
, value
пары) в инкапсулированный класс Ruby (модель без таблиц), создав хэш key
в качестве метода класса, который возвращает value
.
В файле модели у меня есть
class Users::Account #< ActiveRecord::Base
def initialize(attributes = {})
@id = attributes[:id]
@firstname = attributes[:firstname]
@lastname = attributes[:lastname]
end
end
def self.to_model(account)
JSON.parse(account)
end
Мой хэш
hash = {\"id\":2,\"firstname\":\"Name_test\",\"lastname\":\"Surname_test\"}
Я могу сделать
account = Users::Account.to_model(hash)
, который возвращает (отладка)
---
id: 2
firstname: Name_test
lastname: Surname_test
Это работает, но если я сделаю
account.id
Я получаю эту ошибку
NoMethodError in Users/accountsController#new
undefined method `id' for #<Hash:0x00000104cda410>
Я думаю, что <Hash:0x00000104cda410>
- это хеш (!), А не сам класс. Также я думаю, что account = Users::Account.to_model(hash)
- это не правильный подход.
Что не так? Как я могу "сопоставить" эти хэш-ключи с методами класса?