Have in a module in ./lib:
module Pricing
def sell_price
(cost.to_f)/((100-(margn.to_f))/100)
end
def sell_price_inc
((product.cost.to_f)/((100-(product.margn.to_f))/100)*1.14)
end
def charge_excl
(sell_price).to_f * quantity
end
end
A model product:
class Product < ActiveRecord::Base
include Pricing
attr_accessible :name, :code, :cost, :company_id, :margn
belongs_to :company
has_many :allocations
has_many :companies, :through => :allocations
end
An allocation model:
class Allocation < ActiveRecord::Base
include Pricing
attr_accessible :company_id, :allocated_product_id, :quantity,
:saledate, :cost
belongs_to :company
belongs_to :allocated_product, :class_name => ''Product''
#So you have
company.products and company.allocated_products.
end
A products and allocations controller:
class ProductsController < ApplicationController
def index
@products = Product.all
end
class AllocationsController < ApplicationController
def index
@products =Product.all
@allocations = Allocation.all
end
And the views in product index:
<td><%=h (sprintf( "R%.02f" ,product.sell_price))
%></td>
<td><%=h (sprintf( "R%.02f" ,product.sell_price_inc))
%></td>
The above works well !
However in my allocations model and view I am trying to show the price
based on quantity:
def charge_excl
(sell_price).to_f * quantity
end
I get the error: undefined local variable or method `cost''
It is obviously failing as it cannot get access to the cost parameter
and its not accessible
So in a nutshell I can run calculations on one model (product) in the
module but as soon as I require a calculation using two models data
(cost, margin and quantity) it fails
Help is appreciated thanks
--
Posted via http://www.ruby-forum.com/.
--
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.
On 9 February 2011 17:13, Craig Leppan <lists-fsXkhYbjdPsEEoCn2XhGlw@public.gmane.org> wrote:> <td><%=h (sprintf( "R%.02f" ,product.sell_price)) %></td> > <td><%=h (sprintf( "R%.02f" ,product.sell_price_inc)) %></td> > > The above works well !I don''t see how it does when you access "product.cost.to_f" in the sell_price_inc method... when you include that module in Product, it must be expecting an instance to have an attribute or method called "product" too (so a chain that looks like "product.product.cost.to_f").... do you have some other methods you didn''t include in your example?> However in my allocations model and view I am trying to show the price > I get the error: undefined local variable or method `cost''You specify "attr_accessible :cost" in Allocation, but does the table have a cost field? If not, how about adding a cost method to Allocation that returns the product.cost? This would allow the included module methods to have methods that respond to the calls they''re making... -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
Micheal
I made an error in my post, the Module Pricing looks like:
def sell_price
(cost.to_f)/((100-(margn.to_f))/100)
end
def sell_price_inc
((cost.to_f)/((100-(margn.to_f))/100)*1.14)
end
They do both work for the Product model, well spotted!
"You specify "attr_accessible :cost" in Allocation, but does the
table
have a cost field? If not, how about adding a cost method to
Allocation that returns the product.cost? This would allow the
included module methods to have methods that respond to the calls
they''re making..."
The Allocation table has no cost field only the Product table
What would the method look like?
Would it go in the Allocation model, and how can I access the Product
model to get access to it?
Thanks
--
Posted via http://www.ruby-forum.com/.
--
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.
Think I am on the right track as I can attain the cost through the console but the way to handle the method is what I dont get and where to put it and when to call it>> a = Allocation.first=> #<Allocation id: 1, company_id: 1, allocated_product_id: 1, quantity: 2, saledate: nil>>> a.allocated_product.cost=> #<BigDecimal:b6f12d20,''0.2222E4'',4(12)> -- Posted via http://www.ruby-forum.com/. -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
On 9 February 2011 23:37, Craig Leppan <lists-fsXkhYbjdPsEEoCn2XhGlw@public.gmane.org> wrote:> Think I am on the right track as I can attain the cost through the > console but the way to handle the method is what I dont get and where to > put it and when to call itJust put a method in Allocation like this: def cost raise "put some error handling in for when no allocated product exists" unless self.allocated_product self.allocated_product.cost end When the module calls for "cost" when it''s included in Product, it will use the attribute. When it''s included in Allocation it will use the new method (which delegates down to the allocated_product''s cost). -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
Possibly Parallel Threads
- find_by_sql column types
- Range searches some times they work, some times not...
- Fwd: [ mocha-Bugs-7834 ] infinte_range.rb makes incorrect assumption about to_f
- Validation method vs. After Save & Rollback
- Having trouble with a remote-crop-then-resize using attachment fu =(