在使用serialize_with_options时,我意识到它在数组方面无法正常工作。
因此,给定一个@posts数组(如README中所示),调用@ posts.to_json将既不包括用户也不显示标题。
不确定这是否是预期的行为,或者我找不到任何相关内容。
使用Rails 3.0.4
PS。在模型的JSON格式中包含2个自定义属性时,还有其他选择吗?
答案 0 :(得分:1)
考虑像这样重载ActiveModel::Serializers::JSON.as_json:
class Post
def as_json(options)
# make sure options is not nil
options ||= {}
# call super with modified options
super options.deep_merge(methods: [:custom_attr1, :custom_attr2])
end
def custom_attr1
"return first custom data"
end
def custom_attr2
"return second custom data"
end
end
#rspec this like that
describe Post do
subject { Post.new }
it "has custom data" do
to_json.should include(
{ custom_attr1: "return first custom data",
custom_attr2: "return second custom data"})
end
end