0

我有这条语句出错,因为 phone 和 area_code 都是带有 id 的活动记录类型。这里我要选择 area_code id:

area_code_rec = @phone.area_codes.select(:id).where(:areacode => area_code).last

ActiveRecord::StatementInvalid: ActiveRecord::JDBCError: Ambiguous column name 'id'
4

3 回答 3

1

我相信您可以像这样指定 id 来自哪个表:

area_code_rec = @phone.area_codes.select('phones.id').where(:areacode => area_code).last

或使用'area_codes.id'.

于 2013-05-23T19:26:38.470 回答
0

最好不要使用字符串名称,而是直接使用模型中的表名。

所以,使用一些 Ruby 的元编程魔法:

area_code_rec = @phone.area_codes.select("#{AreaCode.table_name}.id").where(:areacode => area_code).last
于 2015-11-03T20:48:38.423 回答
0
area_code_rec = @phone.area_codes.select('area_codes.id').where(areacode: area_code).last

我假设区号表的名称是 area_codes。如果由于某种原因它是单数的,它将是 ...select('area_code.id')...

于 2018-09-21T13:55:35.503 回答