Ruby on Rails Saturday, September 4, 2010

As I am sure you know the 'find_by*' methods are all dynamic. They are
based on the field/column name, not on the type of object the column
is supposed to reference (if any). AR will do the magic of finding the
ID value if you pass an object to the method but apparently it will
not be "magic enough" to let you remove the '_id' suffix from the
field/column name in your 'find_by*' method name. It would be nice if
the Rails guys made a little change so we could do what you wanted to
do here, though. ;)

On Sep 3, 8:27 pm, Pito Salas <li...@ruby-forum.com> wrote:
> Here's an example:
>
> class LineItem < ActiveRecord::Base
>   belongs_to :order
> end
>
> class Order < ActiveRecord::Base
>   has_many :line_items
> end
>
> my_line_item = LineItem.find(:zipcode => "12345")
>
> Order.find_by_line_item(my_line_item) # doesn't work
>
> Order.find_by_line_item_id (my_line_item) # does work
>
> I was surprised by this, because it seems to force me to make reference
> to the id field of the line item, rather than referring to the LineItem
> as a class or type in the Order.findxxx statement.
>
> Am I misunderstanding something or missing a trick?
>
> Thanks!!
>
> -- Pito
> --
> 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@googlegroups.com.
To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.

No comments:

Post a Comment