我有一个与 RABL 一起使用的 Rails API,用于将 JSON 发送回客户端。我需要对模型show
进行index
操作Question
。在这个例子中,一个Question has_many Answers.
你如何处理 RABL 中的 nil 对象?API 引发错误,因为我正在调用.answers
一个question
对象nil
(question_id
传入的对象不存在)。
我可以用下面的类似包装 RABL 的关联部分,if
这样一个question
不存在的就不会导致错误,
# questions/show.rabl
object @question
attributes :id, :text
node(:answer_id) do |question|
if question != nil # <-- This if keeps the .answers from blowing up
answer = question.answers.first
answer != nil ? answer.id : nil
end
end
但是,当我打电话时,/api/questions/id_that_doesn't_exist
我得到了这个返回:{answer_id:null}
而不是只是{}
.
我尝试将整个节点元素包装成if
这样,
if @question != nil # <-- the index action doesn't have a @question variable
node(:answer_id) do |question|
answer = question.answers.first
answer != nil ? answer.id : nil
end
end
但是然后我的index
操作不会返回node(:answer_id)
因为@question
从集合调用时不存在。
有没有办法同时获得这两种行为?
# questions/index.rabl
collection @questions
extends "questions/show"