mshah
October 14, 2009, 4:24pm
#1
Hi,
Im using ActiveRecord to find something.
<% @new = User.find_by_sql(“SELECT * FROM users WHERE users.id NOT IN
(array)”) %>
Now, i can’t seem to make it look through the array. I had a look for
this problem in other languages and in php its simply $array.
mshah
October 14, 2009, 4:34pm
#2
On Wed, Oct 14, 2009 at 4:24 PM, Manish S. [email protected]
wrote:
Hi,
Im using ActiveRecord to find something.
<% @new = User.find_by_sql(“SELECT * FROM users WHERE users.id NOT IN
(array)”) %>
Now, i can’t seem to make it look through the array. I had a look for
this problem in other languages and in php its simply $array.
Perhaps:
“SELECT * FROM users WHERE users.id NOT IN (#{array.join(’, ')})”
mshah
October 14, 2009, 4:44pm
#3
Leslie V. wrote:
On Wed, Oct 14, 2009 at 4:24 PM, Manish S. [email protected]
wrote:
Hi,
Im using ActiveRecord to find something.
<% @new = User.find_by_sql(“SELECT * FROM users WHERE users.id NOT IN
(array)”) %>
Now, i can’t seem to make it look through the array. I had a look for
this problem in other languages and in php its simply $array.
Perhaps:
“SELECT * FROM users WHERE users.id NOT IN (#{array.join(’, ')})”
Thank you Leslie. That worked fine.
mshah
October 14, 2009, 5:10pm
#4
On Wed, Oct 14, 2009 at 9:47 AM, Manish S. [email protected]
wrote:
Now, i can’t seem to make it look through the array. I had a look for
this problem in other languages and in php its simply $array.
Perhaps:
“SELECT * FROM users WHERE users.id NOT IN (#{array.join(’, ')})”
Just an extra question though. what does the array.join(’,’) do?
Posted via http://www.ruby-forum.com/ .
http://www.ruby-doc.org/core/classes/Array.html#M002182
Returns a string created by converting
eachhttp://www.ruby-doc.org/core/classes/Array.html#M002173 element
of the array to a string, separated by
sep .
[ “a”, “b”, “c” ].join #=> “abc”
[ “a”, “b”, “c” ].join("-") #=> “a-b-c”
Also, your use of erb and ActiveRecord implies a MVC structure. If this
is
the case, you should be assigning instance variables in your controller
and
not your view. You should not have find statements or assignments in
your
view, it should only be for formatting output.
mshah
October 14, 2009, 7:31pm
#5
Just play around with it in IRB:
irb(main):002:0> [‘a’, ‘b’, ‘c’].join(’,’)
=> “a,b,c”
I think that when PHP converts $array to a string, it puts commas in
between each element, which is just lucky for the purposes of
producing a list that the SQL statement would like.
This is what happens when Ruby converts an array to a string:
irb(main):003:0> [‘a’, ‘b’, ‘c’].to_s
=> “abc”
So to put in the commas like PHP does it (and SQL likes it), use join.
mshah
October 20, 2009, 7:58am
#6
On Wed, 14 Oct 2009, Manish S. wrote:
Hi,
Im using ActiveRecord to find something.
<% @new = User.find_by_sql(“SELECT * FROM users WHERE users.id NOT IN
(array)”) %>
With ActiveRecord you can use:
User.all(:conditions => ["users.id NOT IN (?)", array])
mshah
October 20, 2009, 9:02am
#7
Matt Haley wrote:
With ActiveRecord you can use:
User.all(:conditions => ["users.id NOT IN (?)", array])
Sweet, just learning ActiveRecords, but was using .find( :all … )
I like this!
–
Kind Regards,
Rajinder Y.
http://DevMentor.org
Do Good ~ Share Freely
mshah
October 14, 2009, 4:47pm
#8
Leslie V. wrote:
On Wed, Oct 14, 2009 at 4:24 PM, Manish S. [email protected]
wrote:
Hi,
Im using ActiveRecord to find something.
<% @new = User.find_by_sql(“SELECT * FROM users WHERE users.id NOT IN
(array)”) %>
Now, i can’t seem to make it look through the array. I had a look for
this problem in other languages and in php its simply $array.
Perhaps:
“SELECT * FROM users WHERE users.id NOT IN (#{array.join(’, ')})”
Just an extra question though. what does the array.join(’,’) do?