Rails アプリに ActiveRecord モデルがあり、これを他の Ruby オブジェクトにマップしたいと考えています。これらのモデルは外部 API にヒットし、クラス間で変更される主なものはフィールド名といくつかの API 仕様です。以下の例では、Personを他の 2 つの API 固有のクラスにマップする必要があります。
class Person
include Virtus
attribute :first_name, String
attribute :last_name, String
attribute :gender, String
end
class PersonApi1
include Virtus
attribute :forename, String
attribute :surname, String
attribute :gender, String
end
class PersonApi2
include Virtus
attribute :firstname, String
attribute :secondname, String
attribute :gender, String
end
このタイプのマッピングを実行できるマッピング gem はありますか? 他の誰かが同様のマッピングの問題に遭遇しましたか?どのようにアプローチしましたか?
もし私が自分自身をロールバックするなら、各フィールドをマッピングするためのある種のハッシュについて考えます。
.net の世界には Automapper があり、以下のようなことが言えます。Rubyで同様のものを利用できますか?
public class CalendarEvent
{
public DateTime Date { get; set; }
public string Title { get; set; }
}
public class CalendarEventForm
{
public DateTime EventDate { get; set; }
public int EventHour { get; set; }
public int EventMinute { get; set; }
public string Title { get; set; }
}
//AutoMapper mapping
Mapper.CreateMap<CalendarEvent, CalendarEventForm>()
.ForMember(dest => dest.EventDate, opt => opt.MapFrom(src => src.EventDate.Date))
.ForMember(dest => dest.EventHour, opt => opt.MapFrom(src => src.EventDate.Hour))
.ForMember(dest => dest.EventMinute, opt => opt.MapFrom(src => src.EventDate.Minute));
オートマッパー wiki からhttps://github.com/AutoMapper/AutoMapper/wiki/Projection