2012-12-20 49 views
0

未定義的方法錯誤,數據庫列別名時,當我嘗試使用列別名的集合(PostgreSQL的)NoMethodError使用Rails中

在我的模型:

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 = '"[email protected]_ip+"'" 

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

然後我看到:未定義的方法`failed_logins'爲#<陣列:0x104d08478 >

回答

2

由於find_by_sql返回一個數組,因此您需要編寫f.first.failed_logins.to_s而不是f.failed_logins.to_s,因此發生此錯誤。 檢查find_by_sql doc here

1

不知道我是完全正確的按照你的邏輯,但好像你可能與此更好:

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

f.map(&:destroy) 

你可以得到f.count

我錯過了什麼實際計數?