我已经开始将旧应用程序转移到新的 Rails 应用程序。首先,我使用 Rails 5.0 创建了它,使用了我在生产中使用的相同数据库。
我的一个联想是:
class Conta < ApplicationRecord
has_many :conta_cooperados, foreign_key: :id_conta
end
class ContaCooperado < ApplicationRecord
belongs_to :conta, foreign_key: :id_conta
end
如果我进行如下查询:
Conta.first.conta_cooperados
我将获得我想要的信息,它会生成以下 SQL:
SELECT `conta_cooperado`.* FROM `conta_cooperado` WHERE `conta_cooperado`.`id_conta` = 1
如您所见,一切运行良好,但由于某些原因,我决定创建一个启用 Rails 5.1 和 API 选项的新应用程序。
现在,当我运行相同的查询时,会生成以下 SQL:
SELECT `conta_cooperado`.* FROM `conta_cooperado` WHERE `conta_cooperado`.`conta_cooperado` = NULL
而这个并没有带来预期的结果,因为这'conta_cooperado' . 'conta_cooperado' = NULL
部分是错误的。
我不知道发生这种情况是因为我使用的是 Rails 5.1 而不是 5.0,还是因为我使用的是 api 模式。
更新:
我刚刚将我的 Rails 5.0 应用程序升级到 5.1 版本,如果在升级之前一切正常,那么我现在遇到了同样的问题。所以,这种情况只发生在 5.1 版本的 Rails 上。这个版本有bug吗?