我的问题与此SO question非常相似。但是,我在Rails 4中创建了一个API,我的API基本控制器继承自ActionController :: Base
classApi::V1::BaseController < ActionController::Base
由于此控制器未从ActionRecord继承,因此无法使用select
或except
之类的内容从对象中获取所需的属性。
我的目标是,而不是在调用API时返回完整对象:
{"id":1,"user_id":1,"name":"foo","description":"bar"}
我想要返回此内容(但仍有多个属性):
{"name":"foo","description":"bar"}
控制器:
class Api::V1::ProjectsController < Api::V1::BaseController
def create
@project = Project.new(project_params)
@project.user = User.find(1)
if @project.save
respond_with(@project, :location => api_v1_project_path(@project))
else
respond_with(@project)
end
end
end
private
def project_params
params.require(:project).permit(:name)
end
end
答案 0 :(得分:1)
您可以使用Model.select(:name).first
或用于选择多个属性
Model.select('email, id').first
你也可以使用Jbuilder gem渲染json,并让你完全控制你想要返回的内容