Я думаю, что названное определение области видимости J выглядит правильно, но помимо этого, я бы задал вопрос, почему вы используете как NULL, так и пустую строку для обозначения «не в галерее». Если у вас есть контроль над всеми вставками и обновлениями в этой базе данных, я бы порекомендовал выбрать одну или другую (мне кажется, NULL более естественным) и придерживаться ее. Это упростит ваш код в таких местах, как, например, эта именованная область, и разрешение обоих может привести к некоторым действительно раздражающим ошибкам, если вы забудете проверить одну или другую.
Простой способ реализовать это - добавить проверку, запрещающую установку галереи в пустую строку, а затем исправить все разрывы (надеюсь, у вас есть тесты). Если вы выставляете API и вам нужно разрешить пустые галереи для обратной совместимости, вы можете установить хук before_save, чтобы изменить пустую строку на nil.