Ruby Object Mapper - Как изменить поле порядка по умолчанию в команде Create?

В настоящее время я работаю над проектом, который я хочу использовать Ruby Object Mapper с существующей базой данных SQL. Я сталкиваюсь с проблемой, когда я выполняю команду создания, возвращенный результат, кажется, сортируется table_name.id по умолчанию. Это проблема, потому что существующие таблицы, с которыми я работаю, имеют первичный ключ с именем, отличным от idи это вызывает unknown column 'id' исключение.

Мне просто интересно, есть ли какой-нибудь возможный способ изменить столбец заказа по умолчанию?

1 ответ

Только что получил ответ от Github:

Эта проблема связана с rom-sql ( https://github.com/rom-rb/rom-sql/blob/master/lib/rom/sql/relation.rb#L39).

Решение состоит в том, чтобы объявить ваш набор данных явно в отношении вашей команды. Попробуйте что-то вроде этого:

class MyRelation < ROM::Relation[:sql]
  dataset { order(:my_column) }
end

https://github.com/rom-rb/rom/issues/339

Обновить:

В качестве альтернативы вы также можете установить это в определении контейнера, используя :macros:

rom_container = ROM.container(:sql, 'mysql2://root@localhost/db_name') do |rom|
  rom.use :macros

  rom.relation(:users) do |r|
    r.primary_key :my_column
    r.dataset { order(:my_column) }
  end
end
Другие вопросы по тегам