2011-12-29 1 views
0

У меня есть два приложения Rails, один клиент использует ActiveResource и одну услугу. Я проверяю следующую команду в консоли:Rails Найти с активным ресурсом Игнорирование параметров

User.find(:all, :params => {:email_address => "[email protected]"}) 

я получить обратно все записи в моей таблице пользователей, а не только тот, указанные в моем параметре электронной почты.

Когда я иду смотреть на журнал для моего приложения службы он показывает, как следует

Started GET "/users.json?email_address=myemail%40domain.com" for 127.0.0.1 at 2011-12-29 11:29:06 -0600 
    (0.4ms) SHOW search_path 
    Processing by UsersController#index as JSON 
    Parameters: {"email_address"=>"[email protected]"} 
    User Load (0.7ms) SELECT "users".* FROM "users" 
Completed 200 OK in 40ms (Views: 35.7ms | ActiveRecord: 3.3ms) 

Мой параметр не был включен в заявлении SQL.

Любое понимание?

+0

пожалуйста, напишите ваш сервис индексный метод приложение users_controller –

+0

попробуйте использовать: условия вместо: Титулы –

+0

Вот мой индекс у пользователей = User.all reply_to do | формат | format.json {визуализации: @users JSON} торцевых Используя условия оленьей кожи пройти Повсеместно в Params и производит этот Started "GET /users.json" для 127.0.0.1 в 2011-12-29 12:08: 41 -0600 Обработка по UserController # index as JSON Пользовательская нагрузка (0,3 мс) SELECT "users". * FROM "users" Завершено 200 OK в 12 мс (Просмотров: 7.0мс | ActiveRecord: 4.1ms) – user1084769

ответ

0

Основываясь на ваш комментарий на исходный вопрос, ваш контроллер по-прежнему выглядит следующим образом:

class UsersController < ActionController::Base 
def index 
    @users = User.all 
    respond_to do |format| 
    format.json { render json: @users } 
    end 
end 
    #other methods down here 
end 

Но для того, чтобы получить ваш взгляд индекса, чтобы сделать только те, которые соответствуют по электронной почте, вам нужно обновить метод индекса:

class UsersController < ActionController::Base 
def index 
    @users = User.find_all_by_email_address(email_address) 
    respond_to do |format| 
    format.json { render json: @users } 
    end 
end 
    #other methods down here 
end 
+0

спасибо jstim. Я нашел различие между параметрами и условиями по отношению к activeresource и activerecord, чтобы они были одинаковыми. моя цель - войти в систему пользователя из клиента activeresource в приложение службы activerecord. при проверке двух параметров пользовательские данные отправляются обратно клиенту, поэтому я могу установить сеанс. В моем первоначальном вопросе я сначала пытался отправить адрес электронной почты и вернуть пользователя, но все еще не увенчался успехом. когда я запрашиваю данные вроде этого из нормального по id, мне нужны специальные маршруты или что-то в контроллерах для этого? – user1084769

+0

Я не думаю, что вам нужно что-то особенное. Все они доступны как часть AR или AS.Однако, как упоминалось выше, в вашем контроллере может быть что-то, что переопределяет этот поиск. Можете ли вы разместить свой контроллер? – jstim

+0

Чтобы уточнить, какое приложение содержит таблицу пользователей? Это тот, кто использует AR или AS? Вы кешируете пользователей с обеих сторон или можете ли вы перепутать свои вызовы на db? – jstim

0

Условия передаются в метод ActiveRecord find через :conditions, а не :params. Таким образом, ваш find вызов должен быть таким:

User.find(:all, :conditions => { :email_address => "[email protected]" }) 

или более Rails 3 стиля:

User.where(:email_address => "[email protected]").all 

Вы можете найти полный список доступных параметров для find метода в docs.

 Смежные вопросы

  • Нет связанных вопросов^_^