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.

Reply via email to