我想覆盖默认的活动记录attributes
方法,因为我不想在任何模型的json响应中返回created_at
和updated_at
。
这就是我所做的。
class ApplicationRecord < ActiveRecord::Base
self.abstract_class = true
def attributes
super.except('created_at', 'updated_at')
end
end
在过去的几个月里,这对我来说还不错。但是现在我遇到了一种情况,我不应该从我的password
模型发送User
属性。所以
class User < ApplicationRecord
def attributes
super.except('password')
end
end
当我从Rails控制台运行它时,它就像一种魅力。但是,当我从控制器运行它时,我真的不知道是什么原因,但是它会无限循环。这是我的控制器动作。
def update
@object = klass.find(id)
@object.update_attributes!(update_params)
render json: {
status: true,
message: 'Saved Successfully..!',
data: object_json(@object)
}
end
def object_json(object)
object.as_json.except('updated_at', 'created_at')
end
有人可以帮我吗
答案 0 :(得分:2)
控制想要在JSON响应中呈现哪些属性的更好方法是使用序列化器,例如active_model_serializers
可以在这里SERVING CUSTOM JSON
找到一篇很好的文章来阅读我不建议覆盖默认的活动记录attributes
方法