I have this library app I'm building and it has 3 classes. State, Library, and Book. The State has many libraries and Library belongs_to a State. The Library has many Books, and book is embedded in a library. However, when I make this auto_pick_job and we get to the top_free_book and call library.state. library.state is nil for some reason. I would expect to get the state back but no dice.. The way I'm calling and creating Libraries are as follows. So Library will always belong_to an existing State. 
state = Stats.find(x)
library = state.libaries.new(info)
library.save_optimistic!
I'm would also be grateful for relationship help using Struct.
class State
  has_many: libraries
end
class Library
  belongs_to :state
end
class Book
  embedded_in :library
  def self.top_free_book(library_id)
    library = Library.find(library_id)    
    library.state
  end
  AutoPickJob = Struct.new(:library_id) do
    def perform     
      Book.top_free_book(library_id)
    end
  end
  def queue_auto_pick
    auto_pick_job = AutoPickJob.new(library_id)
    Delayed::Job.enqueue(auto_pick_job)
  end
end
                belongs_to usually validates presence of the relationship, but if you already have some models that were created prior to belongs_to association being added, they won't necessarily have the association target set on them.
Separately, it is possible to destroy State documents even when there are referencing libraries (the default behavior for associations is nullify). If you delete rather than destroy State documents, this doesn't run callbacks and can leave libraries referencing deleted states.
So, ensure that all of your libraries do:
state_id set.state_ids reference existing state documents.If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With