Я пытаюсь настроить две среды для моего сайта: одну на сервере разработки, одну на живую. И я хочу диктовать, какие записи из БД можно увидеть на каждом сервере. Я создал файл в моих приложениях, для разработки у него есть этот @show = "dev"
, и для него он имеет @show = "live"
. Я включил его в начало моего макета приложения, поэтому он находится на каждой странице. Тогда в моих взглядах, с каждым вызовом базы данных Я хочу поставить некоторые условия, например:Использование переменной в качестве имени столбца в rails
- f = Event.find(:all, :conditions => ["#{@show} = 1"])
Но это не подобрать @show
как переменные, просто использую его в явном виде или игнорирует его. Есть ли простой способ сделать это или это не сработает, как я ожидаю?
обновление
мне удалось заставить его работать, но я должен включить этот файл на каждом просмотре, а не только на макете приложения ... Не идеально, но это решение:
= render "includes/dev_live"
- f = Event.find(:all, :conditions => {@show => 1})
что мешает вам иметь отдельный д atabases для каждой среды? –
Я не хочу иметь две копии всего, вот как это было до этого, и все было не в синхронизации. – user1738017
Использование подстановки текста внутри запроса ненавидят, из-за возможности SQL-инъекции. Я подозреваю, что маловероятно, что значение @show может быть изменено злонамеренным пользователем. Хорошая практика заключается в использовании хэш-формы для условий (как в двух ответах ниже). – Slicedpan