使用与rails

时间:2016-07-01 19:01:37

标签: ruby-on-rails activerecord

我有一个名称位置的现有数据库表,我有一个位于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的这些参数?

1 个答案:

答案 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