Я использую ActiveModel, потому что подключаюсь к стороннему API, а не к БД. Я написал свой собственный инициализатор, чтобы я мог передать хеш, и он будет преобразован в атрибуты модели - для поддержки некоторых форм в приложении.
attr_accessor :Id, :FirstName, :LastName,...
def initialize(attributes = {})
attributes.each do |name, value|
send("#{name}=", value)
end
end
Проблема в том, что я хочу использовать ту же модель для обработки извлечения данных из API, но в ней есть масса других данных, которые меня не особо волнуют. Поэтому я хочу проверить, как я перебираю хеш, возвращенный из API, и проверять, существует ли атрибут в моей модели, а если нет, то просто игнорировать его. Это должно позволить мне иметь согласованную модель как для сообщений формы, так и для данных, возвращаемых из API. Что-то вроде:
def initialize(attributes = {})
attributes.each do |name, value|
if self.has_attribute?(name)
send("#{name}=", value)
end
end
end
Я просмотрел документацию по API ActiveModel, но, похоже, нет аналога. Это заставляет меня чувствовать, что я должен делать это по-другому.
Это правильный (Rails) способ сделать это? Как убедиться, что у меня есть согласованные атрибуты модели, когда данные поступают из разных источников?