Does find return true or false?

If I do a find such as
order = Order.find_by_name(“John”)
will ‘order’ be set to false ?
I want to make a condition where if no record is found , something
happens.
So far no luck with the above though , thought I could confirm

TIA
Stuart

Hi Stuart,

Dark A. wrote:

If I do a find such as
order = Order.find_by_name(“John”)
will ‘order’ be set to false ?

I believe you’ll find that what ‘find’ returns depends on what you ask
it
for. I think if you ask it to ‘find first’ it returns either a single
record or nil, and if you ask it to ‘find all’ it returns a (possibly
empty)
array.

hth,
Bill

Find will return nil when no record is found - so order will effectively
be
false.

This should work for you:

order = Order.find_by_name(“John”)
unless order

handle record not found

end

On 9/19/06, Dark A. [email protected] wrote:

Stuart


Dark ambient - Wikipedia


Matt J.
[email protected]
President/Technical Director, Acme Art Company (acmeartco.org)

On 9/19/06, Dark A. [email protected] wrote:

value of current_user.id has.
end

Stuart

The string “user_id = current_user.id” is being passed straight into
SQL,
where
it probably just gives an error. You want “user_id =
#{current_user.id}”,
which
will insert the value of current_user.id into the string.

However, what you are doing seems like a major re-invention of the
wheel -
you’re doing all the work for a has_one association. You probably want
your
models to look like this:

class Cdetail < ActiveRecord::Base
belongs_to :user
end

class User < ActiveRecord::Base
has_one :cdetail, :dependent => :destroy
end

The “:dependent => :destroy” part will ensure that Cdetail records are
not
left hanging around without associated User objects.

With that set up, you can access the associated Cdetail record like
this:

current_user.cdetail

and figure out if one exists with

current_user.cdetail.nil?

Hope this helps,


Matt J.
[email protected]
President/Technical Director, Acme Art Company (acmeartco.org)

Here’s my problem now :slight_smile: I am attempting to check for records before
allowing user to do a create. The problem is in the first line.
current_user.id should be available because I can get it to print out
in various views and it’s in the application.rb controller. However
it doesn’t seem to take. To test my method , if i say user_id = 10,
then things work.
in the Cdetail model user_id is a method (column). So basically what
I’m trying to say here is count how many records user_id with the
value of current_user.id has.
i.e. right now i’m the only one on the system, so my current_user.id
is 10. Somehow this translation is not taking place ?

def check_forec
@result = Cdetail.count “user_id = current_user.id”
if @result >= 1
flash.now[:warning] = ‘Record Alread exists’
redirect_to(:controller => ‘index’, :action => ‘index’)
end
end

Stuart

On 9/19/06, Matt J. [email protected] wrote:


Matt J.
[email protected]
President/Technical Director, Acme Art Company (acmeartco.org )

Take a look at the “validates_unique” validator, in addition to what
Matt J. has already said.

On 9/19/06, Dark A. [email protected] wrote:

i.e. right now i’m the only one on the system, so my current_user.id

unless order

I want to make a condition where if no record is found , something


Dark ambient - Wikipedia


When a man says he approves of something in principle, it means he
hasn’t the slightest intention of putting it into practice. –
Bismarck

On 9/19/06, Matt J. [email protected] wrote:

end
current_user.cdetail.nil?

Hope this helps,

Matt J.

I’m having a hard time using ‘current_user.cdetail.nil?’ in a before
filter. Maybe it’s the way I’m writing it out. However the way things
are set up cdetails/new will create a new record. I wanted the filter
in the event that one existed. I guess it could be changed to ask if
it’s ‘not nil’.

Stuart

On 9/19/06, Matt J. [email protected] wrote:

in the Cdetail model user_id is a method (column). So basically what
redirect_to(:controller => ‘index’, :action => ‘index’)
which
class User < ActiveRecord::Base
and figure out if one exists with

current_user.cdetail.nil?

Hope this helps,

Matt J.

Matt - Thank you so much and btw, apologies for the cross post. I
think I could use some remedial Ruby and go back to the books. I
completely forgot the #{ }. I did have the associations set up but no
the destory but it makes sense.

Stuart

On 9/19/06, Michael C. [email protected] wrote:

Take a look at the “validates_unique” validator, in addition to what
Matt J. has already said.

I thought about the validates_unique, however this is a situation
where the user would create one record and then have the option later
of edit and destroy. I wouldn’t want the user to enter in the
information again only to have the form bounce back.

Stuart

On 9/19/06, Dark A. [email protected] wrote:

of edit and destroy. I wouldn’t want the user to enter in the
information again only to have the form bounce back.

That’s a pretty common pattern - you can bounce it back with an error
message, WITH all his information intact to retry or do whatever.