Help with queries

Hi, Id like to do something like that:

@payment_history = PaymentHistory.where(“company_id = #{@company.id} AND
created_at <= #{Time.now} AND create_at >= #{Time.now - 1.month}”).first

problem is it doesn’t seen to let me compare the create_at attribute
with
Time.now.

Anyone knows the proper way to do this?

Thank you,
Rodrigo

puts Time.now.inspect
puts Time.now.inspect.class

–output:–
2011-07-23 23:18:03 -0700
String

Also see:

http://www.sqlite.org/lang_datefunc.html

I think you can do this way, too:

1.month.ago

On Sun, Jul 24, 2011 at 3:42 AM, Fernando A. <

Need quotes:

created_at <= "#{Time.now}" AND created_at >= "#{Time.now-1.month}"

but you can to do that way

.where(:company_id => @company.id).where(:created_at =>
Time.now…Time.now-1.month)

2011/7/24 Rodrigo R. [email protected]

Thank you,


Fernando A.

On Sat, Jul 23, 2011 at 9:56 PM, Rodrigo R. [email protected]
wrote:

@payment_history = PaymentHistory.where(“company_id = #{@company.id} AND
created_at <= #{Time.now} AND create_at >= #{Time.now - 1.month}”).first
problem is it doesn’t seen to let me compare the create_at attribute with
Time.now.

“create_at” or created_at ?

Anyone knows the proper way to do this?

Showing the actual error message would help provide better answers.


Hassan S. ------------------------ [email protected]

twitter: @hassan

On Sat, Jul 23, 2011 at 9:56 PM, Rodrigo R.
[email protected]wrote:

Hi, Id like to do something like that:

@payment_history = PaymentHistory.where(“company_id = #{@company.id} AND
created_at <= #{Time.now} AND create_at >= #{Time.now - 1.month}”).first

Rodrigo, you might be able to do something like this:

time_range = (Time.now - 1.month)…(Time.now)
@payment_history = PaymentHistory.where( :company_id => @company.id
).where(
:created_at => time_range ).first

Good luck,

-Conrad

use array, so try

time = Time.now
story = PaymentHistory.where([“company_id = ? AND created_at <= ? AND
create_at >= ?”, company.id, time, time - 1.month ).try(:first)

NEVER use direct inserting of values into SQL query

and “first” could end with “nil.first”, so use try()

tom

On Jul 24, 2011, at 6:56 , Rodrigo R. wrote:


You received this message because you are subscribed to the Google G. “Ruby
on Rails: Talk” group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.

Tomas Meinlschmidt, MS {MCT, MCP+I, MCSE, AER}, NetApp Filer/NetCache

www.meinlschmidt.com www.maxwellrender.cz www.lightgems.cz

Can i use … as in 0…10 with Time ??

On Sun, Jul 24, 2011 at 3:42 AM, Fernando A. <

Thank you very much guys, it worked

sorry, missed one ]

story = PaymentHistory.where([“company_id = ? AND created_at <= ? AND
create_at >= ?”, company.id, time, time - 1.month]).try(:first)

On Jul 24, 2011, at 19:55 , Tom M. wrote:

tom


For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.

===============================================================================
Tomas Meinlschmidt, MS {MCT, MCP+I, MCSE, AER}, NetApp Filer/NetCache

www.meinlschmidt.com www.maxwellrender.cz www.lightgems.cz

On 24 July 2011 20:56, Rodrigo R. [email protected] wrote:

Thank you very much guys, it worked

Which suggestion worked? Just so that someone who finds this thread
can learn from it and not have to ask all over again.

Colin

On Sun, Jul 24, 2011 at 6:05 AM, Conrad T. [email protected]
wrote:

time_range = (Time.now - 1.month)…(Time.now)
@payment_history = PaymentHistory.where( :company_id => @company.id ).where(
:created_at => time_range ).first

If the following is the case:

class Company
has_many :payment_histories

def first_paymeny

end

class PaymentHistory
belongs_to :company
end

Then you should write something like the following:

paymant_histories = []

unless @company.nil?
time_range = (Time.now - 1.month)…(Time.now)
paymant_histories = @company.payment_histories.where( :created_at =>
time_range )
end

@payment_history = paymant_histories.first

In the above, we scoped the PaymentHistory from the context of the
Company
instance
and this makes our intentions clear. Next, payment_histories will
always
return an array.
Thus, you’ll have no worries of invoking the first method on it and it
will
not require using
the try method.

Good luck,

-Conrad

Good luck,

:created_at => time_range

That part worked =)