Ruby on Rails, метод where_values

В Ruby on Rails 4 был метод where_values:

User.with_all_credentials(creds).where_values
[
    [0] "lower(email) = 'test'"
]

В Ruby on Rails 5, когда я пытаюсь сделать то же самое, мне возвращается, что этого метода не существует. Как я могу получить такой же результат в Ruby on Rails 5?

это то, что вы ищете?

Kedarnag Mukanahallipatna 28.08.2018 09:59

К сожалению, нет, я пробовал это, но в моем примере он возвращает пустой хеш.

Mateusz Urbański 28.08.2018 10:01
github.com/rails/rails/commit/c414fc6
Leo 28.08.2018 10:06

Я думаю, что where_values ​​никогда не было публичным API, только where_values_hash был и есть. Однако реализация where_values_hash изменилась: github.com/rails/rails/blob/… - хотя не уверен, почему в вашем случае where_values_hash пусто.

trueunlessfalse 28.08.2018 10:13

в Active Record нет четкой границы между общедоступными и предположительно частными методами (которые на самом деле являются общедоступными). Это совершенно сбивает с толку.

apneadiving 28.08.2018 10:39

@apneadiving граница - это документация: если это :nodoc:, то это внутренняя. Было бы неплохо, если бы у Ruby был более жесткий способ соблюдения этого правила, но, к сожалению, это не так.

matthewd 28.08.2018 15:38

@matthewd да, я сожалею, что они не делают методы приватными, было бы понятно :)

apneadiving 29.08.2018 09:44

@apneadiving и что, заставить каждую вторую строчку в rails / rails использовать .send(:foo)? : / Нам действительно нужно что-то вроде bugs.ruby-lang.org/issues/12962

matthewd 29.08.2018 15:28

@matthewd Я не уверен, что мы поняли друг друга. Я имею в виду: если основная команда rails считает метод закрытым, сделайте его закрытым. Если вы возитесь с использованием send, вы точно будете знать, что делаете это на свой страх и риск. Открытие всех дверей.

apneadiving 29.08.2018 20:00

@apneadiving Самому Rails все еще необходимо иметь возможность вызывать этот метод. Если у вас есть идея, как это улучшить, пожалуйста, откройте PR.

matthewd 30.08.2018 05:37

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

apneadiving 30.08.2018 14:39
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
11
1 149
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Как легко увидеть в коде Rails, теперь это where_clause.

(Потому что where сейчас живет в CLAUSE_METHODS.)

Ref с рельсов 4, чтобы показать изменение
engineersmnky 28.08.2018 15:34

Другие вопросы по теме