Grape实体公开给委托/转发给其他对象

时间:2018-12-17 03:19:40

标签: grape grape-entity

在使用Grape Entity时,有时我们希望公开内部/相关对象的一些字段。我们可以通过以下方式简单地做到这一点:

 <!-- MODAL FOR MESSAGE THREAD -->
<div id="threadmessage" class="modal fade" role="dialog">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal">&times;</button>
                <h3>Message Thread</h3>
            </div>
            <div class="modal-body" style="height: 300px;" >
                <div class="row" style=" margin-left: 30px; margin-bottom: 5px; left: 20px; width: 550px; height: 200px; overflow: auto;">
                    <div>
                        @foreach ($messageThread as $thread)
                                {{$thread->message}}
                                <br>
                        @endforeach
                    </div>
                    <br>
                </div>
                <div>
                    <br>
                    <div class="col-md-2"> 
                        <b> Message: </b><br>
                    </div>
                    <div class="col-md-10"> 
                        <textarea required=" " id="messageContent" style="resize: none;" class="form-control" rows="2"></textarea>
                    </div>
                </div>
                <br>
            </div>
            <div class="modal-footer">
                <div>
                    <button type="button" id="btn-message" class="btn btn-default" data-dismiss="modal" style="background-color: #3c5fa6; color: white;"> 
                        Send <i class="fa fa-paper-plane-o ml-1"> </i>
                    </button>
                </div>
            </div>
        </div>
    </div>

但是,如果许多字段需要这种处理,则可能会非常重复。有没有一种方法可以定义委托/转发,以便一堆expose(:bar) { |entity| entity.foo.bar } 与另一个对象相关联?

1 个答案:

答案 0 :(得分:0)

foo类创建一个单独的实体,我们将其称为API::Entities::Foo。那么你可以

  expose :foo, using: API::Entities::Foo

您必须遵循REST准则才能像这样进行序列化。您正在处理resources。不要将其分解为扁平,繁琐的数据结构。