Sinatra Web アプリケーションでは、DB からデータを取得し、それらを UI に受け入れられるオブジェクト (そして最終的には JSON) に変換しようとしています。ただし、UI フィールドと DB フィールドに必要な属性の名前にはいくつかの違いがあります。だから私はエイリアシングで Sequel クエリを使用しました:
Sequel::Model.plugin :json_serializer
class Alarm < Sequel::Model
# attr_accessor :id, :Alarm
end
filter = Alarm.filter(:NEName => params[:name]).select(:AlarmNo___id, :AlarmMsg___Alarm).all
しかし、私がこの変換をしようとしているとき:
res = filter.to_json
私は得る:**undefined method** 'id' for # Alarm:0x000000027403e0
また、アクセサーをモデルに追加しようとしましたが (コメントアウトされた行を参照)
attr_accessor :id, :Alarm
、次のような多くのオブジェクトを取得しました: {"json_class":"Alarm","id":null,"Alarm":null}
、これは論理的な結果のようです。
では、Q1 : json_serializer プラグインで続編のエイリアシングを機能させるにはどうすればよいですか?
Q2 : おそらく、このマッピングを提供する他のソリューションがいくつかあるかもしれません (新しいクラスの作成や追加の変換メソッドの追加なし) - to_json メソッドのオプションを介して json 属性名に影響を与えるなど