On Tuesday, November 6, 2018 at 2:45:13 PM UTC-8, Barbara Carradini wrote:
>
> I can't find that this behavior is documented anywhere and it feels like 
> it's a bug:
>
> Scenario #1 (expected behavior):
>
> [89] pry(main)> user = *User*.with_pk *358*
>
> => #<DonorSee::User @values={:id=>358, :first_name=>"asdasd", 
> :last_name=>"sadasd", :email=>"d...@assad.asd", 
> :password_hash=>"$2a$10$qBwNaRsYguLvhNlLlj7W3ulKWoaSOHptTgejvLKDn/OuOU6hZpjRq",
>  
> :fb_id=>nil, :created_at=>2017-03-20 03:45:45 -0700, 
> :updated_at=>2018-11-06 15:27:41 -0700, 
> :stripe_customer_id=>"cus_AJvKRYSgUr9Odu", :photo_url=>nil, 
> :app_version=>nil, :bio=>nil, :stripe_plan_id=>nil, 
> :video_promises_kept_cache=>0, :video_promises_broken_cache=>0, 
> :anonymous=>false, :prompt_to_subscribe=>true, :num_projects_cache=>0, 
> :num_partially_funded_projects_cache=>0, :num_funded_projects_cache=>0, 
> :num_funded_projects_with_video_cache=>0, :num_givers_cache=>0, 
> :last_gift_card_unlocked_at=>2018-11-06 15:27:38 -0700}>
>
> [90] pry(main)> *GiftCardPromoOption*.where(user: user).first
>
> => #<DonorSee::GiftCardPromoOption @values={:id=>8, :user_id=>358, 
> :gift_card_id=>15, :created_at=>2018-11-06 15:26:00 -0700, 
> :updated_at=>nil}>
>
> [91] pry(main)> *GiftCardPromoOption*.where(user: user).where{created_at 
> >= user.last_gift_card_unlocked_at}.first
>
> => *nil*
>
> Scenario #2 (unexpected behavior):
>
> [92] pry(main)> @user = *User*.with_pk *358*
>
> => #<DonorSee::User @values={:id=>358, :first_name=>"asdasd", 
> :last_name=>"sadasd", :email=>"d...@assad.asd", 
> :password_hash=>"$2a$10$qBwNaRsYguLvhNlLlj7W3ulKWoaSOHptTgejvLKDn/OuOU6hZpjRq",
>  
> :fb_id=>nil, :created_at=>2017-03-20 03:45:45 -0700, 
> :updated_at=>2018-11-06 15:27:41 -0700, 
> :stripe_customer_id=>"cus_AJvKRYSgUr9Odu", :photo_url=>nil, 
> :app_version=>nil, :bio=>nil, :stripe_plan_id=>nil, 
> :video_promises_kept_cache=>0, :video_promises_broken_cache=>0, 
> :anonymous=>false, :prompt_to_subscribe=>true, :num_projects_cache=>0, 
> :num_partially_funded_projects_cache=>0, :num_funded_projects_cache=>0, 
> :num_funded_projects_with_video_cache=>0, :num_givers_cache=>0, 
> :last_gift_card_unlocked_at=>2018-11-06 15:27:38 -0700}>
>
> [93] pry(main)> *GiftCardPromoOption*.where(user: @user).first
>
> => #<DonorSee::GiftCardPromoOption @values={:id=>8, :user_id=>358, 
> :gift_card_id=>15, :created_at=>2018-11-06 15:26:00 -0700, 
> :updated_at=>nil}>
>
> [94] pry(main)> *GiftCardPromoOption*.where(user: @user).where{created_at 
> >= @user.last_gift_card_unlocked_at}.first
>
> NoMethodError: undefined method `last_gift_card_unlocked_at' for 
> nil:NilClass
>
> from (pry):53:in `block in <main>'
>
> ---------------------
>
> I've been able to recreate the above behavior with a number of different 
> data models. If I use a local variable to store a reference to a Class 
> instance, then de-reference that local variable in a where{} clause, it 
> works fine. But if I use an instance variable to store a reference to a 
> Class instance, then de-reference that instance variable in a where{} 
> clause, it fails with "undefined method... for nil:NilClass"
>

This is expected behavior.   Virtual row blocks without arguments use 
instance_exec and therefore instance variables should not be used instance 
of them.  
See http://sequel.jeremyevans.net/rdoc/files/doc/virtual_rows_rdoc.html

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 sequel-talk+unsubscr...@googlegroups.com.
To post to this group, send email to sequel-talk@googlegroups.com.
Visit this group at https://groups.google.com/group/sequel-talk.
For more options, visit https://groups.google.com/d/optout.

Reply via email to