Страницы

Поиск по вопросам

вторник, 16 июля 2019 г.

Как использовать гем rails-settings-cached?

Всем привет. Кто-нибудь пользовался гемом rails-settings-cached (https://github.com/huacnlee/rails-se...er/README.md)?
У меня по этому поводу следующие вопросы и проблемы. (все вопросы основываются на гайде по гему, ссылка выше)
У меня Rails v.4.2.1. какую версию гема мне нужно использовать "rails-settings-cached", "0.4.1" для Rails 4.1.x или "rails-settings-cached", "0.3.1" для Rails 4+ ?? После установки гема генерируем settings:
$ rails g settings SettingsCompany
это создаст только модель settings_company.rb и миграцию для создания таблицы БД. Т.е. чтобы сделать вьюхи для редактирования настроек админом приложения, контроллер нужно вручную создать?
Опуская Вопрос 2, допустим я создаю контроллер для Settings. То, как я его назову, будет иметь значение?
Итак
rails g controller Settings
имеем (исходя из гайда):
class SettingsController < ApplicationController
def index # to get all items for render list @settings = Setting.all end
def edit @setting = Setting.unscoped.find(params[:id]) end end
и при попытке перейти по settings/index.erb получается ошибка
NameError in SettingsController#index uninitialized constant SettingsController::Setting
в строке
@settings = Setting.unscoped
и что такое и почему "unscoped"?
И я не совсем понимаю принцип работы гема
чтобы занести данные в БД никакие манипуляции с миграциями не нужны? и достаточно просто написать в коде что-то типа такого?:
Setting.admin_password = 'supersecret'
и это создаст в таблице запись со значениями
var = admin_password value = supersecret
??
спасибо


Ответ

1 "0.4.1" для Rails 4.1.x
2 Да, контроллер и вьюхи самостоятельно.
3 Должно быть так:
class SettingsController < ApplicationController
def index # to get all items for render list @settings = SettingsCompany.get_all end end
unscoped отменяет все scope. Скоупы это предопределенные фильтры для класса:
class Shirt < ActiveRecord::Base scope :red, -> { where(color: 'red') } end
Таким образом, можно вызвать Shirt.red и получить коллекцию красных рубашек. В гайде unscoped используется для отмены каких-то внутренних скоупов, которые наложены в самом геме.
4 Да, достаточно
Setting.admin_password = 'supersecret'
эта магия работает через method_missing

Комментариев нет:

Отправить комментарий