Rails - 在对象上创建API和过滤属性

时间:2014-02-13 12:58:45

标签: ruby-on-rails ruby api ruby-on-rails-4

我的问题与此SO question非常相似。但是,我在Rails 4中创建了一个API,我的API基本控制器继承自ActionController :: Base

classApi::V1::BaseController < ActionController::Base

由于此控制器未从ActionRecord继承,因此无法使用selectexcept之类的内容从对象中获取所需的属性。

我的目标是,而不是在调用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

1 个答案:

答案 0 :(得分:1)

您可以使用Model.select(:name).first

执行此操作

或用于选择多个属性

 Model.select('email, id').first

你也可以使用Jbuilder gem渲染json,并让你完全控制你想要返回的内容