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.