I’m a beginner to both Ruby and Rails and I’m currently reading the Agile development with Rails, in which I’m currently developing the cart of the store.
I have a line_items model which belongs_to :products. This makes sense. Later in the example we use this code to check if a product is referenced by any line items before we destroy it:
class Product < ActiveRecord::Base
# ensure that there are no line items referencing this product
errors.add(:base, 'Line Items present')
This makes sense to me except of one part: if line_items.empty? I can only guess that *line_items* returns all the rows of the "line_items" table that contain the product.id of the currently instantiated Product object, is that right? But how does the model knows what to fetch just by "line_items"? Isn't that too little info that we give to our model, regarding the logic of the task it has to do? Don't we have to declare somewhere something like: *return false if line_items.product.id == product.id* ?
Thanks in advance people!