特定の Mongoid レコードを属性で装飾して、その属性が含まれるようにする方法を見つけようとしてto_json
います (特定の引数を渡すように言わないでくださいto_json
- これは二重にネストされており、ここでは機能しません)。これを行う方法はありますか?私が思いつくことができるのは
my_record[:my_special_attribute]='foo'
もちろん、これは機能しません。
特定の Mongoid レコードを属性で装飾して、その属性が含まれるようにする方法を見つけようとしてto_json
います (特定の引数を渡すように言わないでくださいto_json
- これは二重にネストされており、ここでは機能しません)。これを行う方法はありますか?私が思いつくことができるのは
my_record[:my_special_attribute]='foo'
もちろん、これは機能しません。
あなたのために働くかもしれない2つのバージョンはここにあります:
上書きto_json
:
require 'mongoid'
Mongoid.load!("mongoid.yml", :development)
class MyClass
include Mongoid::Document
def to_json(options = {})
json = JSON.parse(super)
json['my_special_attribute'] = 'whatever you want'
json.to_json
end
end
p MyClass.new.to_json # => "{\"_id\":\"5155899ee44f7ba6e7000001\",\"my_special_attribute\":\"whatever you want\"}"
に引数を渡しますto_json
(申し訳ありませんが、完全を期すために):
require 'mongoid'
Mongoid.load!("mongoid.yml", :development)
class MyClass
include Mongoid::Document
def not_a_field
"whatever you want"
end
end
p MyClass.new.to_json(methods: :not_a_field) # => "{\"_id\":\"51558b67e44f7bddb7000001\",\"my_special_attribute\":\"whatever you want\"}"
このオプションをネストされたレコードに渡すこともできます(二重にネストされているということは、それを意味していると思います):
my_record.to_json(include: {other_class: {methods: :special_field}})
このメソッドを 1 つの特定のレコード (= インスタンス) に追加することもできます。
my_object = MyClass.new
def my_object.not_a_field
"whatever you want"
end
p my_object.to_json(methods: :not_a_field) # => "{\"_id\":\"51558cc8e44f7bd1f6000001\",\"not_a_field\":\"whatever you want\"}"