model issues with ruby on rails 3

17 views
Skip to first unread message

amvis

unread,
Apr 12, 2012, 10:49:32 AM4/12/12
to rubyonra...@googlegroups.com
   
    @user = User.find_by_user_name(user_name)
      if !@user.business_admins.nil?
            puts "Am here"
           @business_admin = @user.business_admins[0]
      end
class User < ActiveRecord::Base
  has_many :business_admins
end

class BusinessAdmin < ActiveRecord::Base
  belongs_to :user
end

Here what i am trying, I am using Mozilla rest-client, basically here the user_name found in the User table, But i didn't put that id in the BusinessAdmin, So what the problem is  when i run the code, this if !@user.business_admins.nil? will return true, because am getting this "Am here"

Have any issues with this model??...

Thankyou
Vishnu

Colin Law

unread,
Apr 12, 2012, 10:54:35 AM4/12/12
to rubyonra...@googlegroups.com

I am not sure what you are saying. If you have user has_many
business_admins then @user.business_admins will never be nil. It may
be an empty array however. Perhaps you should be testing for the
array empty rather than nil.

Colin

Colin Law

unread,
Apr 12, 2012, 3:54:57 PM4/12/12
to rubyonra...@googlegroups.com
On 12 April 2012 16:27, amvis <vgrkr...@gmail.com> wrote:
> Basically, the BusinessAdmin doesn't have that  use_name's id, then why this
> checking happned?

First what relationships have you got between the models (has_many,
belongs_to or whatever)?

As I said last time, if user has_many business_admins then
@user.business_admins will always (effectively) be an array, which may
be empty. It will never be nil.

By the way, you sent your last email to me instead of to the list.
Please make sure you reply to the list.

Colin


>
> if !@user.business_admins.nil?
>              puts "Am here"
>             @business_admin = @user.business_admins[0]
>        end
>
>

> Thank you
> vishnu
>

Message has been deleted

amvis

unread,
Apr 13, 2012, 1:53:57 AM4/13/12
to rubyonra...@googlegroups.com
  if !@user.business_admins[0].nil?

           puts "Am here"
            @business_admin = @user.business_admins[0]
       end

 

>By the way, you sent your last email to me instead of to the list.


>Please make sure you reply to the list.

Colin Law

unread,
Apr 13, 2012, 4:05:28 AM4/13/12
to rubyonra...@googlegroups.com
On 13 April 2012 06:50, amvis <vgrkr...@gmail.com> wrote:
> [snip]
> when i check like this i got the solution
>
>   if !@user.business_admins[0].nil?

if !@user.business_admins.empty?
might be a bit cleaner and easier to understand, or
if @user.business_admins.count == 0

Colin

Reply all
Reply to author
Forward
0 new messages