Можно сделать это с регулярным выражением, но вероятно Вы еще захотите некоторым. Например, используйте несколько regexp и объедините их в выражении if.
можно перечислить все возможные перестановки со стандартом regexp, как это (соответствует a, b и c в любом порядке):
(abc)|(bca)|(acb)|(bac)|(cab)|(cba)
Однако это делает очень длинное и вероятно неэффективный regexp, если у Вас есть больше, чем условия пары.
, Если Вы используете, некоторые расширили regexp версию, как Perl или Java, у них есть лучшие способы сделать это. Другие ответы предложили использовать положительную предварительную операцию.
Упростить самостоятельно и просто определите правильные местоположения для файловой системы и веб-папок и добавьте их к имени файла изображения.
Чтобы уменьшить повторение кода, вы также можете создать основной класс, который будет включать этот модуль и просто наследовать от него от каждой модели, поведение которой вы хотите поделиться.
Что-то вроде:
module Fooable
def do_foo
end
end
class ParentModel < ActiveRecord::Base
include Fooable
end
class Product < ParentModel end
class User < ParentModel end
class Item < ActiveRecord::Base end
Таким образом, в этом примере и Product, и User будут совместно использовать функции do_foo, а Item - нет.