thanks! On Wed, Sep 30, 2020 at 2:05 PM Jeremy Evans <[email protected]> wrote:
> On Wed, Sep 30, 2020 at 9:56 AM Rodrigo Dutra <[email protected]> wrote: > >> Not a failure per say, just wondering what's the proper way of doing this >> we have a custom adder in one of our models like so >> >> many_to_many :disabled_custom_products, >> class: 'CustomProduct', >> join_table: >> :disabled_custom_products_locations, >> right_key: :custom_product_id, left_key: >> :location_id, >> adder: (lambda do |custom_product, reason, >> comment, available_at = nil| >> >> DisabledCustomProductsLocation.update_or_create( >> { location_id: id, >> custom_product_id: custom_product.id }, >> available_at: available_at, >> reason: reason, comment: comment) >> end) >> >> My problem is that that custom adder has gotten too big and I'd like to >> move it off the association declaration, but I've found that I can only >> declare the lambda as a variable and have to do do it before the >> association declaration (I can probably create a method too but that would >> look even uglier defined before the relations) >> >> Is there a better way of accomplishing this ? >> > > If the issue is only about the lambda being too big, you could do: > > adder: lambda{|*args| your_method(*args)} > > def your_method(custom_product, reason, comment, available_at = nil) > DisabledCustomProductsLocation.update_or_create( > { location_id: id, custom_product_id: custom_product.id }, > available_at: available_at, reason: reason, comment: comment) > end > > An alternative approach is to do this after the association and not use > the :adder option, since the :adder option just defines this method: > > private def _add_disabled_custom_product(custom_product, reason, comment, > available_at = nil) > DisabledCustomProductsLocation.update_or_create( > { location_id: id, custom_product_id: custom_product.id }, > available_at: available_at, reason: reason, comment: comment) > end > > Thanks, > Jeremy > > -- > You received this message because you are subscribed to the Google Groups > "sequel-talk" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/sequel-talk/CADGZSSfcxzOH3LQYLFZumMmtEvanmw0%2BGt0vgjywr-cOGyjyFg%40mail.gmail.com > <https://groups.google.com/d/msgid/sequel-talk/CADGZSSfcxzOH3LQYLFZumMmtEvanmw0%2BGt0vgjywr-cOGyjyFg%40mail.gmail.com?utm_medium=email&utm_source=footer> > . > -- You received this message because you are subscribed to the Google Groups "sequel-talk" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/sequel-talk/CAA0Mm7veNKNDO2x29KNC925NR0YK9BAV1rQ%3Duu7CFN4xwFwNQw%40mail.gmail.com.
