Tag: rails api

合并嵌套属性

我有一个使用post,评论和作者模型的样本。 请从以下主题中查看我的完整要求 嵌套路由和CRUD操作以及Rails中的附加值 在这里,我需要在创建post时创建一个注释。 我使用嵌套属性并且工作正常。 但我的问题是我不想要用户的所有属性。 某些属性需要在内部添加。 如果属性没有嵌套属性,我可以合并。 但是合并不适用于嵌套属性。 我从这里得到了解决方案 现在我的params方法如下所示; private def create_params filtered_params = params.require(:post) .permit([:name, :description, comments_attributes: [:author_id, :comments]]) additional_params = {record_status: 1, comments_attributes: [record_status: 1]} result = filtered_params.merge(additional_params) do |key, oldval, newval| if newval.is_a? Array oldval ||= {} Hash[oldval.map {|k, v| [k, v.merge(newval.first)]}] elsif newval.is_a? Hash oldval ||= {} oldval.merge newval […]

ActionController :: RoutingError:未初始化的常量Api :: V1 :: ApiController

我有用于控制用户任务的Rails 5 API项目,我有以下错误,但并不总是对于相同的控制器和路由。 ActionController::RoutingError: uninitialized constant Api::V1::ApiController 我向您描述了一些我的项目,以更详细地解释错误。 应用结构 路线 scope module: ‘api’ do namespace :v1 do # => Login routes scope module: ‘login’ do match ‘login’, to: ‘sessions#login’, as: ‘login’, via: :post end # => Team routes scope module: ‘team’ do # => no admin routes resources :tasks, except: [:index] do collection do match […]

强制所有收到的请求Content-Type为JSON

我实际上正在使用一个使用Rails 4的API。如果客户端没有在Content-Type标头中指定媒体类型,我想将请求的Content-Type设置为JSON。 为了获得该行为,我尝试在ApplicationController添加以下before_action : def set_request_default_content_type request.format = :json end 在我的RegistrationsController#create方法中,我有一个断点来检查一切是否正常。 好吧, request.format技巧不起作用,尽管值设置为application/json ,似乎控制器(或Rails内部)不会将接收到的请求的Content-Type视为JSON。 我使用以下正文进行了POST请求(并且没有Content-Type): {“user” : {“email”:”foobar@mail.net”,”password”:”foobarfoo”}} 通过Pry调试我看到: [2] api(#) _ request.format.to_s => “application/json” [3] api(#) _ params => { “action” => “create”, “controller” => “v1/registrations” } 这意味着Rails没有考虑我的请求,使用Mime::JSON配置了request.format,而是使用Mime::ALL ,因此它没有解析请求的JSON主体。 🙁

基于令牌的Rails JSON API身份validation

我在rails中制作API。 对于正常的身份validation,我们使用设计,但在API中如何实现设计validation。 gem ‘devise_token_auth’ 有人更喜欢这个gem进行身份validation,但没有可用的教程。 如何在rails api中实现authenitication?