Ruby 对象映射器 - 如何更改创建命令中的默认顺序字段?
Ruby Object Mapper - How to change the default order field in a Create command?
我目前正在做一个项目,我想将 Ruby Object Mapper 与现有的 sql 数据库一起使用。我在执行创建命令时 运行 遇到了问题,返回的结果默认情况下似乎按 table_name.id
排序。这是一个问题,因为我正在使用的现有表有一个名为 id
以外的主键,它会导致 unknown column 'id'
异常。
我只是想知道是否有任何可能的方法来更改默认顺序列?
刚从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
我目前正在做一个项目,我想将 Ruby Object Mapper 与现有的 sql 数据库一起使用。我在执行创建命令时 运行 遇到了问题,返回的结果默认情况下似乎按 table_name.id
排序。这是一个问题,因为我正在使用的现有表有一个名为 id
以外的主键,它会导致 unknown column 'id'
异常。
我只是想知道是否有任何可能的方法来更改默认顺序列?
刚从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