我有一个名为Event的模型,后者又与EventType
有一个关联event = Event.last
event.as_json(include: {event_type: {only: :name}}, only: :event_type)
这给了我输出
{ :event_type=> { "name"=>"Chat" } }
但我想要的回应是
{ :event_type => "Chat" }
我怎样才能做到这一点?
答案 0 :(得分:0)
您可以使用:methods
键在事件上创建实例方法并将其包含在序列化响应中(请参阅as_json
的文档)。
但您不想创建event_type
方法,因为关联has_one已为您创建了一个方法。也许你可以做event_method_name
?如果你必须得到你想要的完全响应,似乎JBuilder或Active Model Serializers会让你更好地控制输出。
答案 1 :(得分:0)
您可以在event.rb。
中执行此操作def as_json
options = {event_type: event_type[:name]}
super
end
您可能还会考虑创建和调用一个新方法,以避免在您需要其他地方的完整对象时覆盖该方法。
def event_type_as_json
{event_type: event_type[:name]}.as_json
end