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 has_many :line_items before_destroy :ensure_not_referenced_by_any_line_item private # ensure that there are no line items referencing this product def ensure_not_referenced_by_any_line_item if line_items.empty? return true else errors.add(:base, 'Line Items present') return false end end end 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! -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To view this discussion on the web visit https://groups.google.com/d/msg/rubyonrails-talk/-/4LQoGwJO8J8J. To post to this group, send email to rubyonrails-talk@googlegroups.com. To unsubscribe from this group, send email to rubyonrails-talk+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.