Задать вопрос
@IvanN777

Не получается подключить валидацию через lib, что не так?

Я прочитал интересную статью на Habr о том как сделать модель чише.
Но так-как статья старовата, то видимо что-то надо понастроить ручками.

Статья, кому интересно habrahabr.ru/post/125822

Участок кода вызвавший сложности
# lib/models/validations.rb
module Models
  module Validations
    # общий модуль c валидациями для нескольких моделей
  end
end

# lib/models/user/validation.rb
module Models
  module User
    module Validations
      # валидации для модели User
    end
  end
end

# app/models/user.rb
class User < ActiveRecord::Base
  include Models::Validations # Это я убрал за ненадобностью
  include Models::User::Validations
end

Не находит include Models::User::Validations

Попробовал включить ручками
config.autoload_paths += %W(#{config.root}/lib/models)
config.autoload_paths += %W(#{config.root}/lib/models/**/)

Но не прокатило.
  • Вопрос задан
  • 117 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 3
rutaka_n
@rutaka_n
softwere engineer
А чем вам стандартный dsl из ActiveRecord неугодил? несколько строк кода, которые имеют прямое отношение к модели выносить из нее не стоит.
Ответ написан
@kunashir
Ruby/Rails программист
Я когда в последний раз подключал код из lib еще делал

require 'file_reader'

Да и еще в rails 4 можно concerns для этого использовать.
Ответ написан
Комментировать
@vsuhachev
В autoload_paths указывается каталог-корень от которого уже автолоад начинает искать файл по названиям модулей.

Т.е. в вашем случае:
config.autoload_paths << Rails.root.join('lib')

А вообще логичнее перенести ваши модули в app/validations т.к. они являются частью приложения. И в автолоад ничего не надо прописывать, все подкаталоги app туда уже включены по умолчанию
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы