0

集計に列エイリアスを使用しようとすると、未定義のメソッドエラーが発生します(PostgreSQL)

私のモデルの内部:

class B2bLoginAttempt < ActiveRecord::Base
  set_table_name "b2b_logins"
end

私のコントローラーの内部:

    @client_ip = request.env['REMOTE_ADDR']
    @sql = "select count(id) as failed_logins FROM b2b_logins WHERE ip_address = '"+@client_ip+"'"

    f = B2bLoginAttempt.find_by_sql(@sql)
    failed_attempts = f.failed_logins.to_s
    f.destroy

次に、次のように表示されます。#<Array:0x104d08478>の未定義のメソッド `failed_logins'

4

2 に答える 2

2

配列を返すためにエラーが発生するため、の代わりにfind_by_sql書き込む必要があります。こちらのドキュメントを確認してください。f.first.failed_logins.to_sf.failed_logins.to_sfind_by_sql

于 2012-12-20T16:26:31.320 に答える
1

私があなたの論理を完全に正しくフォローしているのかどうかはわかりませんが、これを使用したほうがよいようです。

f = B2bLoginAttempt.where("ip_address = ?", @client_ip)

f.map(&:destroy)

あなたは実際のカウントを得ることができますf.count

私は何か見落としてますか?

于 2012-12-20T16:44:03.900 に答える