Rails 5 присоединяется к предложению where в обеих таблицах - PullRequest
0 голосов
/ 17 октября 2018

Как включить предложение where в таблицу Reply со следующим запросом?

Reply.joins(:replier_account).where(replier_accounts: {account_type: 'reply' })

Я попытался добавить его в конце следующим образом:

Reply.joins(:replier_account).where(replier_accounts: {account_type: 'reply' }).where("created_at > ?", 7.days.ago)

НоЯ получаю следующую ошибку:

ActiveRecord::StatementInvalid: PG::AmbiguousColumn: ERROR:  column reference "created_at" is ambiguous

Ответы [ 2 ]

0 голосов
/ 17 октября 2018

Другой способ переписать этот запрос - объединить условия WHERE в один вызов.

Чтобы получить ответы, учетные записи которых были созданы за последние 7 дней:

Reply.joins(:replier_account)
     .where(
        "replier_accounts.account_type = :type AND replier_accounts.created_at > :created_at",
        { type: 'reply', created_at: 7.days.ago }
     )

Или, чтобыполучить ответы, созданные за последние 7 дней:

Reply.joins(:replier_account)
     .where(
        "replier_accounts.account_type = :type AND replies.created_at > :created_at",
        { type: 'reply', created_at: 7.days.ago }
     )
0 голосов
/ 17 октября 2018

Ошибка говорит о том, что она не знает, по какой таблице вы хотите, чтобы по фильтру «create_at» (по предположению, у них обоих был «create_at»).Попробуйте прикрепить имя таблицы к create_at;вот так:

Reply.joins(:replier_account)
     .where(replier_accounts: {account_type: 'reply' })
     .where("replier_accounts.created_at > ?", 7.days.ago)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...