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


http://en.wikipedia.org/wiki/Dark_ambient


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


http://en.wikipedia.org/wiki/Dark_ambient


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.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs