What does the model association option -> mean? order matters?

11 views
Skip to first unread message

S Ahmed

unread,
Jul 21, 2016, 5:06:08 PM7/21/16
to rubyonra...@googlegroups.com
Currently I have this and it works:

has_many :reports, -> { order(id: :desc) }

I added this and it works:

has_many :reports, -> { order(id: :desc) }, :dependent => :destroy

But this doesnt:

has_many :reports, :dependent => :destroy, -> { order(id: :desc) }


Can someone explain why the last case fails?
What does -> do anyhow?

Thanks.

Walter Lee Davis

unread,
Jul 22, 2016, 12:50:30 PM7/22/16
to rubyonra...@googlegroups.com
Most likely to do with the order of the arguments. The second argument is expected to be a scope, or it can be nil and then it passes to the options hash.

> What does -> do anyhow?

-> means create a Proc and pass in the current object. You might try order: { id: :desc } and see if that works. I think you're getting the arguments too deeply nested here.

Also read the docs for has_many at API Dock. Also you may be missing an opportunity to use a scope for your ordering, since the second argument to has_may is supposed to be a scope.

Walter

>
> Thanks.
>
> --
> 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/CAG2rwuNK4aF1bvPXMTe-vxMr7u8jN-5z2Z76GBVin_RUk6SmAQ%40mail.gmail.com.
> For more options, visit https://groups.google.com/d/optout.

Reply all
Reply to author
Forward
0 new messages