How to prevent user assign value to attribute in ActiveRecord


#1

I have class bill like below

class Bill < ActiveRecord::Base

#total = field in database

has_many :items

after_save :calculate_total

def calculate_total
total = self.items.map{|item| item.price}.sum
end

end

From the code above, the total will be auto calculated from on the
price on each items in this bill. However, user can try to assign the
value of this bill but when save the value with be replace with
after_save calculate_total.

The question is

Do we have a way to prevent user to directly assign the total value
but allow the calculate_total to assign the value?


#2

On 26 Mar., 18:16, noelnoelu removed_email_address@domain.invalid wrote:

def calculate_total
The question is

Do we have a way to prevent user to directly assign the total value
but allow the calculate_total to assign the value?

Back in episode 26 of Railscasts, Ryan B. covered this excact
problem with mass assignment. Enjoy the screencast:
http://railscasts.com/episodes/26-hackers-love-mass-assignment


Best regards,
David K.
http://twitter.com/rubyguy