Всем привет. Кто-нибудь пользовался гемом 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
Комментариев нет:
Отправить комментарий