test if record exists in joined table

10 views
Skip to first unread message

fugee ohu

unread,
Dec 27, 2015, 3:04:39 PM12/27/15
to Ruby on Rails: Talk
in my layout i wanna test if the user has a profile so when he clicks profile my app know whether to present him with a show + link to edit the exisiting profile, or just a form for new profile ~ thanks

Colin Law

unread,
Dec 27, 2015, 3:51:45 PM12/27/15
to Ruby on Rails: Talk
How do you access the user's profile? If it is @user.profile (or
something similar) then @user.profile.nil? should do it.

Colin

>
> --
> You received this message because you are subscribed to the Google Groups
> "Ruby on Rails: Talk" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to rubyonrails-ta...@googlegroups.com.
> To post to this group, send email to rubyonra...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/rubyonrails-talk/0a78ce5d-1e7c-4f26-8c63-f9691689e191%40googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.

fugee ohu

unread,
Dec 27, 2015, 4:07:14 PM12/27/15
to Ruby on Rails: Talk
yikes, i dunno how @user got instantiated, i forgot to say i'm in a view, i dunno if i'm allowed to do this in a view or not:    <% if Profile.find_by_user_id(current_user.id) %>

Colin Law

unread,
Dec 27, 2015, 4:15:57 PM12/27/15
to Ruby on Rails: Talk
On 27 December 2015 at 21:07, fugee ohu <fuge...@gmail.com> wrote:
> yikes, i dunno how @user got instantiated, i forgot to say i'm in a view, i
> dunno if i'm allowed to do this in a view or not: <% if
> Profile.find_by_user_id(current_user.id) %>

You can do anything you like in a view, but what is wrong with
<% if current_user.profile.nil? %>

How many times do I have to ask you not to top post?

Colin
> https://groups.google.com/d/msgid/rubyonrails-talk/a9e1d87d-c329-427a-bb50-ae2fe2ae8d70%40googlegroups.com.

fugee ohu

unread,
Dec 27, 2015, 4:24:53 PM12/27/15
to Ruby on Rails: Talk

Sorry Colin, It's the goolge default When you click reply the cursor flashes on a blank line with quoting below, that's why i always forget but I'll try to remember from now on Do I have to test for nil like that I'd rather use find or find_by more absolutely ~ thanks (merry christmas)

Colin Law

unread,
Dec 27, 2015, 4:35:37 PM12/27/15
to Ruby on Rails: Talk
On 27 December 2015 at 21:24, fugee ohu <fuge...@gmail.com> wrote:
> On Sunday, December 27, 2015 at 4:15:57 PM UTC-5, Colin Law wrote:
>>
>> On 27 December 2015 at 21:07, fugee ohu <fuge...@gmail.com> wrote:
>> > yikes, i dunno how @user got instantiated, i forgot to say i'm in a
>> > view, i
>> > dunno if i'm allowed to do this in a view or not: <% if
>> > Profile.find_by_user_id(current_user.id) %>
>>
>> You can do anything you like in a view, but what is wrong with
>> <% if current_user.profile.nil? %>
>>
>> How many times do I have to ask you not to top post?
>
> Sorry Colin, It's the goolge default When you click reply the cursor flashes
> on a blank line with quoting below, that's why i always forget but I'll try
> to remember from now on Do I have to test for nil like that I'd rather use
> find or find_by more absolutely ~ thanks (merry christmas)

It is not a matter of how you test for nil, it is a matter of how you
access the profile. You suggest using
Profile.find_by_user_id(current_user.id) but you can just do
current_user.profile. It is the same thing but much easier to
understand. You can test for nil any way you like.

Colin

fugee ohu

unread,
Dec 27, 2015, 4:53:28 PM12/27/15
to Ruby on Rails: Talk

 Thanks colin, happy holidays again ha ha Ok so then i'm using `if  current_user.profile?` but the snippet is causing the error application.html.erb:59: syntax error, unexpected keyword_ensure, expecting end-of-input, even though  application.html.erb is only 57 lines

   <% user_signed_in? %>
   <% if current_user.profile? %>
    <%= "profile found" %>
   <% else %>
    <%= "profile not found" %>
   <% end %>
   <div class="dropdown">
    <button class="btn btn-primary dropdown-toggle" type="button" data-toggle="dropdown"><%= current_user.email %></button>
    <ul class="dropdown-menu"><span class="caret"></span>
      <li><%= link_to('Profile', user_profile_path ) %></li>
      <li><a href="#">Account</a></li>
      <li><a href="#">Messages</a></li>
      <li><%= link_to('Sign out', destroy_user_session_path, method: :delete) %></li>
    </ul>
  </div>
  <% else %>
   <div align=right>
    <%= link_to('User sign in', new_user_session_path) %>
   </div>
  <% end %>

Colin Law

unread,
Dec 27, 2015, 5:01:54 PM12/27/15
to Ruby on Rails: Talk
There is no matching 'if' for this 'end'.

Colin

fugee ohu

unread,
Dec 27, 2015, 5:38:46 PM12/27/15
to Ruby on Rails: Talk
what does this mean without the if   <% user_signed_in? %>

Colin Law

unread,
Dec 27, 2015, 5:44:51 PM12/27/15
to Ruby on Rails: Talk
On 27 December 2015 at 22:38, fugee ohu <fuge...@gmail.com> wrote:
> what does this mean without the if <% user_signed_in? %>

It is just a statement that evaluates to true or false and does
nothing with the result.

Colin
> --
> You received this message because you are subscribed to the Google Groups
> "Ruby on Rails: Talk" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to rubyonrails-ta...@googlegroups.com.
> To post to this group, send email to rubyonra...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/rubyonrails-talk/5977573e-e179-457d-96db-2c7d31f09f41%40googlegroups.com.

fugee ohu

unread,
Dec 27, 2015, 5:59:35 PM12/27/15
to Ruby on Rails: Talk
thanks
Reply all
Reply to author
Forward
0 new messages