Я запускаю приложение ruby на rails и хочу выполнить запрос к базе данных PSQL и получить возвращенную информацию.
Моя задача - сделать запрос к базе данных динамическим c на основе параметров, которые я включаю в мой ajax -call.
Вот мой ajax скрипт, запрашивающий выполнение запроса.
<script type="text/javascript">
$('#testyo').click(function(){
console.log('testyo')
$.ajax({
type: "GET",
data: {
request_params: {
name : 'test_name'
},
receive_params: ["description", "price_per_ha", "price_minimum"]
},
dataType: "json",
url: "/client/products.json",
success: function(data){
console.log(data)
// let response = JSON.parse(data);
// displayResult(response,1);
}
});
return false;
});
</script>
вот мой контроллер, который обрабатывает запрос , это рабочий код.
before_action :set_product, only: [:show, :edit, :update, :destroy]
def index
puts params[:request_params]
puts params[:receive_params]
# HERE I HAVE A CHALLENGE:
products = Product.where( name: params[:request_params][:name] )
.select(:description, :price_per_ha, :price_minimum)
respond_to do |format|
format.json { render json: products }
end
end
end
В строке Product.where(XXX).select(YYY)
я хочу получить код динамически, используя параметры, которые я передаю вместе с запросом.
Сегодня мы только передаем name
к запросу на .where( name: params[:request_params][:name] )
, но в будущем мы могли бы также передать country
. Вместо жесткого кодирования это было бы замечательно, если бы был способ заменить XXX
чем-то динамическим c, которое извлекает переменные запроса из params[request_params]
То же самое относится к YYY
. Сегодня я сделал select(:description, :price_per_ha, :price_minimum)
, но на самом деле он должен использовать массив params[:receive_params]
, чтобы отфильтровать только подмножество атрибутов объекта.
Спасибо за помощь!