Rails 4 namespace :: models and folder controllers

My current application structure looks like this:

enter image description here

An example controller looks like this:

class Api::V1::RegisterController < Api::V1::ApiController

  def create
    @user                  = ::V1::User.new(user_params)
    @user.email_address    = params[:email_address]
    @user.age_verification = params[:age_verification]
    @user.remote_addr      = request.env['REMOTE_ADDR']
    @user.web_browser      = browser.name.to_s + "(" + browser.version.to_s + ")"
    @user.operating_system = browser.platform.to_s

    if @user.save
      head status: 201
    else
      render_bad_request(@user.errors.messages)
    end
  end

  private

  def user_params
    params.permit(:email_address, :remote_addr, :web_browser, :operating_system, :age_verification)
  end

end

An exemplary model is as follows:

class V1::User < ActiveRecord::Base

  validates_presence_of :remote_addr, :web_browser,
                        :operating_system, :age_verification, :email_address

  validates :email_address, uniqueness:   { case_sensitive: false },
                            email_format: { check_mx: true }

end

My main question is why am I forced to use ::V1in front of my models? Is there a better way around this or am I missing something?

+4
source share
2 answers

, . V1::User, RegisterController Api::V1::RegisterController V1, , Api::V1, Api, V1, V1. Api::V1 User (, , , ). :: .

... , V1 Api? , V1::Api::WhateverController User . , ....

+3

::V1 ::Api::V1 . V1::User Api::V1::ApiController, V1 User. API::V1, ruby ​​ ::Api::V1::User. , ActiveSupport api/v1/user.rb - . , User NameError.

+1

Source: https://habr.com/ru/post/1545050/


All Articles