Можно ли использовать запросы активных записей в действии контроллера? - PullRequest
0 голосов
/ 27 декабря 2018

У меня есть действие контроллера, которое требует найти данные из существующей базы данных.Я все еще изучаю рельсы и недавно узнал об активных запросах записи.Но я не уверен, как использовать его для извлечения записи из базы данных в действии контроллера.Кто-нибудь может объяснить это на каком-нибудь примере?

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 04 января 2019

Я нашел ответ.Мы можем использовать активные запросы на запись для извлечения записи из базы данных в контроллере.Пример следующий:

Рассмотрим базу данных «Платье» с атрибутом цвета.Теперь я хочу получить все «платья» оранжевого цвета.Таким образом, запрос будет выглядеть следующим образом:

@dresses = Dress.where(color: 'orange')

При этом будут получены все записи о платьях, которые имеют цвет = оранжевый.

0 голосов
/ 27 декабря 2018

Да, вы можете использовать запрос активной записи внутри контроллера.Но лучше поместить логику запроса активной записи только внутри модели.Поскольку рельсы следуют за архитектурой MVC

MVC обозначает Модель, Представление и Контроллер.MVC разделяет приложение на три компонента - Модель, Представление и Контроллер.

Модель: Модель представляет форму данных и бизнес-логику.Он поддерживает данные приложения.Объекты модели получают и сохраняют состояние модели в базе данных.Модель - это данные и бизнес-логика.

Представление: представление - это пользовательский интерфейс.Просмотр данных дисплея с использованием модели для пользователя, а также позволяет им изменять данные.

Контроллер: Контроллер обрабатывает запрос пользователя.Как правило, пользователь взаимодействует с View, который, в свою очередь, вызывает соответствующий URL-запрос, этот запрос будет обработан контроллером.Контроллер отображает соответствующий вид с данными модели в качестве ответа.

Пример: -

class RoomsController < ApplicationController
  before_action :set_room, only: [:show, :edit, :update, :destroy]

  # GET /rooms
  # GET /rooms.json
  def index
    @rooms = Room.all
  end

  # GET /rooms/1
  # GET /rooms/1.json
  def show
  end

  # GET /rooms/new
  def new
    @room = Room.new
  end

  # GET /rooms/1/edit
  def edit
  end

  # POST /rooms
  # POST /rooms.json
  def create
     @room = Room.new(room_params)

     respond_to do |format|
       if @room.save
          format.html { redirect_to @room, notice: 'Room was successfully created.' }
          format.json { render :show, status: :created, location: @room }
       else
         format.html { render :new }
         format.json { render json: @room.errors, status: :unprocessable_entity }
       end
    end
  end

  # PATCH/PUT /rooms/1
  # PATCH/PUT /rooms/1.json
  def update
    respond_to do |format|
      if @room.update(room_params)
         format.html { redirect_to @room, notice: 'Room was successfully updated.' }
         format.json { render :show, status: :ok, location: @room }
      else
        format.html { render :edit }
        format.json { render json: @room.errors, status: :unprocessable_entity }
      end
    end
  end

  # DELETE /rooms/1
  # DELETE /rooms/1.json
  def destroy
    @room.destroy
    respond_to do |format|
      format.html { redirect_to rooms_url, notice: 'Room was successfully destroyed.' }
      format.json { head :no_content }
    end
  end

  private
    # Use callbacks to share common setup or constraints between actions.
    def set_room
      @room = Room.find(params[:id])
    end

    # Never trust parameters from the scary internet, only allow the white list through.
    def room_params
      params.require(:room).permit(:name, :type, :user_id)
    end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...