2014-09-21 4 views
0

Мне нужно найти идентификатор пользователя в 2 столбцах объекта Event, поэтому вам нужно использовать запрос OR. Каков правильный способ сделать это? Код ниже не работает.Активная запись ИЛИ запрос в Rails 4

@event=Event.where((user_id= (current_user.id)) or (user2_id= current_user.id)) 

ответ

1

Написать в

@event = Event.where("user_id = :uid or user2_id = :uid", {uid: current_user.id}) 
5

Вы можете использовать как

@event=Event.where("user_id= ? or user2_id = ?", current_user.id, current_user.id) 
2

Я хотел бы предложить, чтобы иметь лучшую структуру базы данных, так что вам не использовать нужно использовать user#{N}_id, чтобы найти пользователей ,

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

Во-вторых, похоже, что в настоящее время операции с моделью выполняются в контроллере, вам может потребоваться переместить бизнес-логику в модель.

Отвечая на ваш вопрос, вы можете сделать:

 
    current_user_id = current_user.id 
    query = "select * from events where user_id = #{current_user_id} or user2_id = #{current_user_id}" 
    result = Event.connection.execute(query) 

Источник: http://apidock.com/rails/ActiveRecord/Core/connection

0

Если вы стремитесь к Rails 5 вы можете использовать OR, как документально here

Post.where("id = 1").or(Post.where("id = 2")) 
# SELECT `posts`.* FROM `posts` WHERE (('id = 1' OR 'id = 2')) 

Вы надеваете Не нужно ждать, пока рельсы 5 будут использовать этот запрос OR. Мы также можем использовать его с rails 4.2, благодаря драгоценному камню where-or

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