1

我目前正在开发一个项目,我想将 Ruby Object Mapper 与现有的 sql 数据库一起使用。执行创建命令时遇到问题,返回的结果似乎table_name.id默认排序。这是一个问题,因为我正在使用的现有表有一个名为 以外的主键id,它会导致unknown column 'id'异常。

我只是想知道是否有任何可能的方法来更改默认订单列?

4

1 回答 1

3

刚从 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#issuecomment-193904733

更新:

或者,您也可以在容器定义中使用: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
于 2016-03-08T18:47:15.420 回答