我正在将Angular 2应用程序与Rails 5.1 API后端集成。
我的Angular模型中有一个Comment
模型,其中包含message
和date
属性。但是在我的Comment
的Rails模型中,以及message
属性我created_at
和updated_at
属性由ActiveRecord::Migration
通过t.timestamps
自动提供。
我使用ActiveModel::Serializer
更好地控制API响应,而在comment_serializer
我希望在API响应中包含date
代替created_at
GET /comments
,GET /comments/:id
等中的每条评论都不需要更改Angular模型 - 假设这是正确的方法,我该怎么做呢?
另外,当我从Angular客户端添加评论时,我希望date
模型中的Comment
属性映射到相应created_at
中的Comment
Rails中的模型 - 我该如何解决这个问题?
答案 0 :(得分:2)
- 我想在每个评论的API响应中包含日期代替created_at
醇>
要实现此目的,您必须在Serializer中定义自定义属性。喜欢这个
class CommentSerializer < ActiveModel::Serializer
attributes :id, :message, :date
def date
object.created_at
end
end
- 我希望Comment模型中的date属性映射到created_at
醇>
要实现此目的,您只需在创建评论时手动更新created_at字段。像这样的东西
class CommentController < ApplicationController
def create
@comment = Comment.new(comment_params)
@comment.created_at = params[:comment][:date]
if @comment.save
render :something
else
render :something
end
end
private
def comment_params
params.require(:comment).permit(:message, :next_field, :etc)
end
end
希望这有帮助。
答案 1 :(得分:2)
我认为您在序列化程序中需要此行吗?
attribute :created_at, key: :date
希望它可以帮助某人。