在自定义键活动模型序列化器下包装属性

时间:2016-08-08 05:12:06

标签: ruby-on-rails active-model-serializers

我有像

这样的序列化器
member_roosevelt

和json产生如下

$query1     =   "SELECT ACCOUNT
                FROM
                    `members_roosevelt`";
$result_q1  =   $link->query($query1) or die($link->error);
while ($obj =   $result_q1->fetch_object()) {
    $members[] = $obj->ACCOUNT;
}
$ids =  implode(',', $members);
$sql =  "UPDATE `members_roosevelt` as `memb`
        JOIN    `loan_roosevelt` as `loan`
        ON      `memb`.`ACCOUNT` = `loan`.`ACCOUNT`
        SET 
            (`memb`.`ACCOUNT`,
            `loan`.`ACCOUNT`) = CASE ACCOUNT";
foreach ($members as $id => $ordinal) {
    $sql .= sprintf("WHEN %d THEN %d ", $ordinal, (3000+$id));
}
$sql .= "END WHERE memb.ACCOUNT IN ($ids)";
$link->query($sql) or die($link->error);

如何在自定义键class UserSeriazer < ActiveModel::Serializer attributes :name, :email end

下包装上方 json项目
{
  name: 'james'
  email: 'j@sample.com'
}

我尝试了类似属性:name,:email,key :: customer,但是没有用。提前谢谢。

1 个答案:

答案 0 :(得分:1)

您可以尝试将根密钥添加到序列化程序文件中。在UserSerializer中,添加此

attributes :name, :email, root: 'customer'

我不确定这是怎么回事。如果这不起作用,你可以使用以下内容。

最好的方法是创建一个名为CustomerSerializer的新序列化程序。这将继承自UserSerializer。在派生的序列化程序中,您可以指定所需的属性。用户UserSerializer应修改为使用CustomerSerializer。

class CustomerSerializer < UserSerializer
  attributes :name , :email
end

请评论哪些有效!

相关问题