Как объединить два ActiveRecord::Relation для формирования активного отношения по ИЛИ?

Эта ссылка отлична но это не решает проблему получения active_relation после объединения двух активных отношений при условии или. Существуют и другие ссылки, но
ни одна из них не отвечает на поставленный выше вопрос. Хотя для anding метод merge работает и дает активное отношение, мое затруднение в поиске пути к or двум условиям. Чтобы прояснить мою проблему, предположим, что мне нужно или два по-разному написанных запроса, а не выполнять их отдельно и добавлять их, которые не выводят активное отношение. Например:-

@incoming = Message.incoming_from_my_friends_only(@current_user) # where 'incoming_from_my_friends_only' is a active record query  
@outgoing = Message.outgoing_to_my_friends_only(@current_user) # same here

Теперь я не хочу этого делать

@incoming = Message.incoming_from_my_friends_only(@current_user) 
@outgoing = Message.outgoing_to_my_friends_only(@current_user)

@messages = @incoming + @outgoing

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

Любые идеи... или лучше обойти мою проблему??

Пересмотрено: -

Я просмотрел профиль и обнаружил, что этот вопрос лишен какой-либо активности, даже комментария, хотя он может оказаться вопросом жизненной важности. Я говорю это, потому что сделать и на AR очень просто, как показано во второй ссылке, используя метод merge, но такого метода не существует для или почему это так ??? не должно ли сообщество профессионалов рельсов предоставить этот метод ???


person zeal    schedule 12.10.2014    source источник


Ответы (1)


Позже я нашел способ объединить два активных отношения при условии или, но не тот ответ, который я искал, например, есть метод для выполнения и в активном отношении с использованием слияние. Ответ, который я нашел, был таким.

# replace the comment part in where by the condition written for incoming_from_my_friends_only and outgoing_to_my_friends_only respectively
@incoming = Message.where("(#incoming_from_my_friends_only(@current_user)) or (outgoing_to_my_friends_only(@current_user))") 
person zeal    schedule 30.11.2014