我有一个依赖find_by_id
的外部库,但我的主键是uuid
。 id
列不存在。
有没有办法让Model.find_by_id
别名为Model.find_by_uuid
,甚至只有Model.find
?
答案 0 :(得分:2)
一般情况下,动态find_by
方法不受欢迎,首选Model.find_by(uuid: '123')
。
但在你的情况下,听起来你可以像这样覆盖主键。
class Model
self.primary_key = 'uuid'
end
这样您就可以Model.find('1234-1234-1234-1234')
我仍然认为这不适用于find_by_id
,因为这是指定要查看的列名称。如果您真的依赖于此外部库,则可以覆盖find_by_id
class Model
def self.find_by_id(id)
find_by uuid: id
end
end
答案 1 :(得分:0)
确实没有必要得到幻想,修改或覆盖任何东西
Model.find_by (uuid: client_id)
或
Model.where(uuid: client_id).take
将满足您的查询需求。 Active record querying documentation