2014-10-14 2 views
0

Я использую прямые SQL-запросы в рельсах, и я хочу сделать SQL-запросы менее подробными.Создание команды SQL в rails

я имею в виду добавление Somthing вдоль линий:

$SQL = ActiveRecord::Base.connection 

так что я могу использовать:

$SQL.execute("<query>") 

или:

def SQL(params) 
      ActiveRecord::Base.connection.execute(params) 
    end 

так что я могу использовать:

SQL("<query>") 

firstly: Где было бы лучшее место в приложении для рельсов, чтобы сделать это общедоступным?

secondly: Есть ли какие-либо причины, это было бы плохой идеей?

ответ

0
  1. Вы можете поместить свой код в класс и поместить файл в свой каталог lib. После того, как вы сообщите рельсам о загрузке этого файла, вы сможете позвонить по своему методу, где хотите.

  2. Это плохая идея, потому что таким образом вы вообще не используете ActiveRecord. ActiveRecord позволяет вам очень сильно настроить весь SQL, созданный им, но если вы не можете получить то, что хотите, я бы предложил использовать, по крайней мере, метод find_by_sql, который доступен в ваших моделях.

Например, имея модель пользователя, вы можете сделать

User.find_by_sql("place here your sql query") 

Делая так что все извлеченные записи будут «установлены» в модельных случаях, и вы будете иметь возможность использовать его таким же образом, поскольку они будут получены через классический запрос (..).

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