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
dracko
July 24, 2011, 8:19am
2
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
dracko
July 24, 2011, 2:17pm
3
I think you can do this way, too:
1.month.ago
On Sun, Jul 24, 2011 at 3:42 AM, Fernando A. <
dracko
July 24, 2011, 8:43am
4
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.
dracko
July 24, 2011, 4:58pm
5
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
dracko
July 24, 2011, 3:06pm
6
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
dracko
July 24, 2011, 7:58pm
7
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
dracko
July 24, 2011, 9:53pm
8
Can i use … as in 0…10 with Time ??
On Sun, Jul 24, 2011 at 3:42 AM, Fernando A. <
dracko
July 24, 2011, 9:58pm
9
Thank you very much guys, it worked
dracko
July 24, 2011, 8:23pm
10
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
dracko
July 24, 2011, 9:59pm
11
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
dracko
July 25, 2011, 3:13am
12
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,