加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 使用globalize3获取数据时ActiveRecord Statem

发布时间:2020-12-17 03:20:25 所属栏目:百科 来源:网络整理
导读:当我试图通过指定的艺术家获取所有音频歌曲时,我收到错误: ActiveRecord::StatementInvalid: PGError: ERROR: column reference "artist" is ambiguousLINE 1: ... AND (audio_translations.artist IS NOT NULL) AND (artist = '... ^: SELECT "audios"."id
当我试图通过指定的艺术家获取所有音频歌曲时,我收到错误:

ActiveRecord::StatementInvalid: PGError: ERROR:  column reference "artist" is ambiguous
LINE 1: ... AND (audio_translations.artist IS NOT NULL) AND (artist = '...
                                                             ^
: SELECT "audios"."id" AS t0_r0,"audios"."audio_genre_id" AS t0_r1,"audios"."song" AS t0_r2,"audios"."artist" AS t0_r3,"audios"."file_id" AS t0_r4,"audios"."photo_id" AS t0_r5,"audios"."description" AS t0_r6,"audios"."position" AS t0_r7,"audios"."created_at" AS t0_r8,"audios"."updated_at" AS t0_r9,"audios"."date" AS t0_r10,"audio_translations"."id" AS t1_r0,"audio_translations"."audio_id" AS t1_r1,"audio_translations"."locale" AS t1_r2,"audio_translations"."artist" AS t1_r3,"audio_translations"."song" AS t1_r4,"audio_translations"."description" AS t1_r5,"audio_translations"."created_at" AS t1_r6,"audio_translations"."updated_at" AS t1_r7 FROM "audios" LEFT OUTER JOIN "audio_translations" ON "audio_translations"."audio_id" = "audios"."id" WHERE "audio_translations"."locale" = 'en' AND (audio_translations.artist IS NOT NULL) AND (artist = 'Andy')

我使用以下AR语句:

Audio.with_translations(I18n.locale).find(:all,:conditions => ["artist = ?",'Andy'])

它没有with_translations方法:

>> Audio.find(:all,'Andy'])
 => [#<Audio id: 10,audio_genre_id: 1,song: "My heart,my life",artist: "Andy",file_id: 1,photo_id: nil,description: "...",position: 2,created_at: "2011-07-12 07:24:43",updated_at: "2011-07-12 08:31:21",date: "2011-07-12 07:24:00">]

解决方法

试着改变

Audio.with_translations(I18n.locale).find(:all,:conditions => 
  ["artist = ?",'Andy'])

Audio.with_translations(I18n.locale).find(:all,:conditions => 
  ["audios.artist = ? OR audio_translations.artist ?",'Andy','Andy'])

此查询执行具有相同列的两个表的sql连接

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读