Hi all, I have two models gallery and photo (has_many -> belongs_to). Can I use this to find the primary photo for the given gallery? @gallery = @user.galleries @primary_photo = @gallery.photos.find_by_primary(true).first it ends with error. Thanks for any help. P. -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
On 27 Feb 2009, at 11:31, Petan Cert wrote:> > Hi all, > > I have two models gallery and photo (has_many -> belongs_to). > Can I use this to find the primary photo for the given gallery? > > @gallery = @user.galleries > @primary_photo = @gallery.photos.find_by_primary(true).first >find_by_xxx returns a single object (or nil) so that call to first is superfluous. Fred> it ends with error. > > Thanks for any help. > P. > -- > Posted via http://www.ruby-forum.com/. > > >--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
the correct call is:
@primary_photo = @gallery.photos.find(:first, :conditions => {:primary
=> true})
or (but thats an old one and i don''t know if that isn''t
deprecated):
@primary_photo = @gallery.photos.find_first_by_primary(true)
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---
or you could add a named_scope to your photo-model:
named_scope :primary, :conditions => { :primary => true }
then your call could be like:
@primary_photo = @gallery.photos.primary.first
this should be the nicest alternative.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---
Thx for all your suggestions, but it always ended up with this error.
NoMethodError in GalleriesController#index
undefined method `photos'' for #<Class:0x54a56dc>
def index
@title = "gallery preview"
@user = User.find(params[:user_id])
@gallery = @user.galleries
@primary = @gallery.photos.primary.first
end
I think, that my routes should be fine.
--
Posted via http://www.ruby-forum.com/.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---
It looks from your code as if you''re returning a list of user galleries rather than a single one, so the list you get won''t have a photos method. Does your code work if you change the third line in your method to @gallery = @user.galleries.first Eifion http://asciicasts.com Twitter: @eifion On Fri, Feb 27, 2009 at 12:47 PM, Petan Cert < rails-mailing-list-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org> wrote:> > Thx for all your suggestions, but it always ended up with this error. > > NoMethodError in GalleriesController#index > undefined method `photos'' for #<Class:0x54a56dc> > > def index > @title = "gallery preview" > @user = User.find(params[:user_id]) > @gallery = @user.galleries > @primary = @gallery.photos.primary.first > end > > I think, that my routes should be fine. > > -- > Posted via http://www.ruby-forum.com/. > > > >--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Eifion Bedford wrote:> It looks from your code as if you''re returning a list of user galleries > rather than a single one, so the list you get won''t have a photos > method. > Does your code work if you change the third line in your method to > > @gallery = @user.galleries.first >Yes, thats the error. Now it is working but just for the first one. Is there a way to loop all of the users galleries? Thank you. P. -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
well if you want all the primary photos just use my suggested
named_scope. then you can ask:
@all_primary_photos = Photo.all.primary # or just Photo.primary
@all_galleries = Gallery.all
no loop needed. but if you want to loop, you can do that with
@all_galleries.each do |gallery|
# gallery.photos
end
On 27 Feb., 15:05, Petan Cert
<rails-mailing-l...-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org>
wrote:> Eifion Bedford wrote:
> > It looks from your code as if you''re returning a list of user
galleries
> > rather than a single one, so the list you get won''t have a
photos
> > method.
> > Does your code work if you change the third line in your method to
>
> > @gallery = @user.galleries.first
>
> Yes, thats the error.
> Now it is working but just for the first one.
>
> Is there a way to loop all of the users galleries?
> Thank you.
>
> P.
>
> --
> Posted viahttp://www.ruby-forum.com/.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---