我有一个名称位置的现有数据库表,我有一个位于rails中的位置api。职位表包含以下栏目:
deviceid | servertime | latitude | longitude | altitude | speed | address
和位置api具有以下参数
device_id | created_at | lat | lon | altitude | gps_speed | address
现在我想在我的位置api中使用位置数据库表,我想在它们之间创建以下映射:
Database Table Name | API Paramater Name
1) Speed | gps_speed
2) Latitude | lat
3) Longitude | lon
4) deviceid | device_id
5) servertime | created_at
6) altitude | altitude
7) address | address
任何人都可以告诉我如何创建此映射,以便这些位置表列中的值可以映射到位置api的这些参数?
答案 0 :(得分:0)
我们可以通过向模型添加自定义别名属性来实现此目的。将此文件添加到'初始化程序'具有active_record_extension.rb文件名的文件夹。
module ActiveRecordExtension
extend ActiveSupport::Concern
module ClassMethods
def alias_attribute_method(new_name, old_name)
self.alias_attribute(new_name, old_name)
self.alias_attribute("#{new_name}=", "#{old_name}=")
end
end
end
ActiveRecord::Base.send(:include, ActiveRecordExtension)
您可以在模型中添加alias_attribute_method方法。这也将处理CRUD操作。通过添加附加方法,不会对性能产生影响,而且可以忽略不计。
alias_attribute_method :gps_speed, :speed
alias_attribute_method :lat, :latitude