Ruby on rails 3.1 为什么';升级到Rails 3.1后,Rails 3是否仍在运行?

Ruby on rails 3.1 为什么';升级到Rails 3.1后,Rails 3是否仍在运行?,ruby-on-rails-3.1,arel,Ruby On Rails 3.1,Arel,这条线是: product_properties.includes(:property).where("properties.name = 'Label Description'").first 它存在于一个“产品”模型中,该模型具有许多:产品属性。SQL正在生成,但抛出了一个MySQL错误,因为它正在尝试选择一个空白列: SELECT `product_properties`.`` AS t0_r0, `product_properties`.`id` AS t0_r1, ... 如何

这条线是:

product_properties.includes(:property).where("properties.name = 'Label Description'").first
它存在于一个“产品”模型中,该模型具有许多:产品属性。SQL正在生成,但抛出了一个MySQL错误,因为它正在尝试选择一个空白列:

SELECT  `product_properties`.`` AS t0_r0, `product_properties`.`id` AS t0_r1, ... 

如何排除导致选择空行的原因?

我找到了答案。线索是查看上面SELECT语句中的第二列。它是“id”。这通常是第一列


此特定表中的“id”未设置为主键,因此该表没有主键。显然,3.1中有一些更改导致Rails查找主键,当找不到主键时返回空白。这就造成了问题。我不知道这是否是Rails的bug。

如果您不确定,我会为这种行为提交罚单。如果是预期行为,他们会关闭它。关闭一个bug总比让一个bug不被报告,让其他人碰到这个问题要好。