I have a model like this:
class Url < ApplicationRecord
validates ...
before_create :generate_number
def generate_number
self.number = a random value
end
end
and a create() method in controller:
def create
@url = Url.new(url_params)
respond_to do |format|
if @url.save
format.html { redirect_to @url, notice: 'Url was successfully created.' }
format.json { render :show, status: :created, location: @url }
else
format.html { render :new }
format.json { render json: @url.errors, status: :unprocessable_entity }
end
end
end
My DB only have two fields: given_url and number. Now, when I go to the new page, there's 2 input form for given_url and number. But I want number take the value from generate_number, not from the form. How can I do that?
Or more specific, is there a way to make the generate_number method to overrides user's input after the app already receive value from user's input?
generate_numberis always called before create, it would override the user's input anyway.after_createfor that. every time you submit form user input is overrides with your random valuegenerate numberbefore_save :override_number def override_number self.number = <some random number here> end. Can you see if you are getting some errors or if some other code is getting executed. try using pry gem to debug