ruby-on-rails 如何在Rails中使用现有数据库并为API创建单一路径

myss37ts  于 2023-03-04  发布在  Ruby
关注(0)|答案(1)|浏览(109)

我的目标是在多个不同的后端服务器类型上运行性能测试,以找出哪些后端服务器在使用REST和WebSocket时效率最高,以及原因。作为测试设置,我创建了一个测试数据库和API服务必须提供的单个API路径。
目前看来,在其他语言(PHP、Python、JavaScript、TypeScript等)中,只要说“for path X do Y in function.“或类似的话就足够了,但在Rails中,似乎文件没有被直接引用,而是给定密钥(?)然后Rails在内部修改它并检索一些具有执行请求的函数的文件。此外,为了使用数据库,似乎必须创建一些以类似方式工作的模型,引用其他对象而不具体说明是什么对象。
看起来之前有一些关于这方面的问题,但无论如何,我似乎都不能让任何东西工作,许多教程似乎从Rails必须生成新数据而不是使用现有数据这一点开始。

如何使用Rails创建一个简单的最小REST接口,用于从中检索(和修改)卡片

GET /users/:userId/cards

其中DB结构(短版本)为

User:
  id INT,
  name VARCHAR

Card:
  id INT,
  text VARCHAR

HasPermissions:
  user_id INT,
  card_id INT,
  owner BOOLEAN

Rails是使用rails new stresstest --api --minimal -d=postgresql初始化的,没有做任何修改,因为我所做的一切最终都会破坏应用程序或根本不工作。
目前使用的Rails版本是7.0.4.2,我以前没有使用Rails的经验,所以任何帮助都非常感谢。

k3fezbri

k3fezbri1#

虽然我对您的问题不太清楚,但下面是您请求在Rails中的基本设置

配置/路由.rb

Rails.application.routes.draw do
  get '/users/:id/cards', to: 'cards#index'
end

型号/用户.rb

class User < ApplicationRecord
  has_many :has_permissions
  has_many :cards, through: :has_permissions
end

型号/具有权限.rb

class HasPermission < ApplicationRecord # terrible name 
  belongs_to :user
  belongs_to :card
end

型号/卡.rb

class Card < ApplicationRecord
  has_many :has_permissions
  has_many :users, through: :has_permissions
end

控制器/卡_控制器.rb

class CardsController < ApplicationController
  respond_to :json

  def index
    @cards = User.find(params[:id]).cards
    render json: @cards
  end 
end

注意:这里没有包括许多步骤,包括

  • 安装所需的库
  • 在config/database.yml中设置数据库连接
  • 架构生成和/或转储
  • 基本上所有与Rails有关的东西

相关问题