В моем Rails API/Угловом приложении я хочу иметь возможность искать таблицы Rails с использованием значений полей. В настоящее время у меня этот код работает, что позволяет искать таблицу по адресу электронной почты, и она возвращает запись пользователей как JSON.Запрос Rails произвольным столбцом
API/Контроллеры/users_controller.rb
def query # by email
queried_user = User.where(email: params[:email]).first
if !queried_user.nil?
render json: queried_user, root: false
else
render json: {error: 'Does not exist'}, status: :not_found
end
end
конфигурации/routes.rb
get 'api/users/:id/query' => 'api/users#query'
Пример URL
http://0.0.0.0:8080/api/users/1/[email protected]
Пример вернулся JSON
{"id":14,"title":"Dr.","first_name":"John","last_name":"Smith","email":"[email protected]","job_title":"Head Bioligist","organisation":"NIH","phone_office":null,"city":null,"country":null,"approved":true,"admin":false,"template":false}
Это все работает нормально, в настоящее время, но есть две проблемы, я не могу решить.
Я хотел бы URL, чтобы не содержать : идентификатор я нахожу, когда я оставляю идентификатор из URL, Rails обрабатывает запроса параметр, как идентификатор. Я могу заставить его работать с жестким кодированием фальшивого идентификатора, но это не кажется правильным ответом на меня.
Я хотел бы передать абстракцию param hash в запрос . Он должен отображать столбцы на основе содержимого хэша.
если PARAMS = {адрес электронной почты: '[email protected]'}, то он должен работать, как сейчас, но и другие необходимые параметры могут быть:
{job_title: 'Manager'}
{city: 'LA', last_name: 'Smith'}
Я ожидаю, что я буду изменить кода, но не знаю, как передать произвольные элементы в место.
queried_user = User.where(email: params[:email])
Спасибо. Поскольку я использую Rails, мне нужно немного настроить синтаксис ** get 'api/users/query', чтобы: 'users # query', as: 'user_search' ** – ardochhigh