I was creating this simple rail application. my controller method looks
like this:
def create()
@simple = Simple.new(params[:simple]) ##params coming from view
@simple.save
end
And my model class “Simple” as below:
class Simple < ActiveRecord::Base
set_table_name “name_desc_table”
set_primary_key “name”
before_create :init_name
private
def init_name(cname)
self.name = cname
end
end
When I run this in browser, it throws error “Wrong number of arguments
(0 for 1)”. Obviously, my method “init_name” expects one parameter and
it doesn’t find any while called(by controller??). Basically I want to
send this ‘cname’ variable from controller to model. Can anybody tell me
what can I do in controller method so that ‘cname’ variable is passed
when callback method is called?
Thanks,
-Kalpesh
On Nov 13, 9:00 am, Kalpesh1 Patel [email protected]
wrote:
When I run this in browser, it throws error “Wrong number of arguments
(0 for 1)”. Obviously, my method “init_name” expects one parameter and
it doesn’t find any while called(by controller??). Basically I want to
send this ‘cname’ variable from controller to model. Can anybody tell me
what can I do in controller method so that ‘cname’ variable is passed
when callback method is called?
Callbacks like before_create can’t take any arguments
Fred
Frederick C. wrote:
On Nov 13, 9:00�am, Kalpesh1 Patel [email protected]
wrote:
When I run this in browser, it throws error “Wrong number of arguments
(0 for 1)”. Obviously, my method “init_name” expects one parameter and
it doesn’t find any while called(by controller??). Basically I want to
send this ‘cname’ variable from controller to model. Can anybody tell me
what can I do in controller method so that ‘cname’ variable is passed
when callback method is called?
Callbacks like before_create can’t take any arguments
Fred
So isn’t there any way I can pass some value from controller to model?
Hi Kalpesh1 Patel
So isn’t there any way I can pass some value from controller to model?
You can define cname as n attr_writer in model and can set its value
from controller like @simple.cname = ‘namehere’
Sijo
Sijo k g wrote:
Hi Kalpesh1 Patel
So isn’t there any way I can pass some value from controller to model?
You can define cname as n attr_writer in model and can set its value
from controller like @simple.cname = ‘namehere’
Sijo
Thanks sijo! I am able to get/set it using attr_accessor now
On Fri, Nov 13, 2009 at 10:39 AM, Kalpesh1 Patel
[email protected] wrote:
when callback method is called?
Callbacks like before_create can’t take any arguments
Fred
So isn’t there any way I can pass some value from controller to model?
What do you mean? Of course you can pass values, in fact, you’re
passing a value there.
I don’t see the need of doing something like the before_create hook.
Why don’t you just pass the value to the constructor? Simple.new(:name
=> params[:simple])
–
Leonardo M…
There’s no place like ~
Leonardo M. wrote:
On Fri, Nov 13, 2009 at 10:39 AM, Kalpesh1 Patel
[email protected] wrote:
when callback method is called?
Callbacks like before_create can’t take any arguments
Fred
So isn’t there any way I can pass some value from controller to model?
What do you mean? Of course you can pass values, in fact, you’re
passing a value there.
I don’t see the need of doing something like the before_create hook.
Why don’t you just pass the value to the constructor? Simple.new(:name
=> params[:simple])
–
Leonardo M…
There’s no place like ~
I need before_create because I want to do some preprocessing everytime i
save my ‘Simple’ state in the DB. For example, authentication, logging
or similar stuff I will perform just before ‘save’(this might raise
another question, is this right approach? but this can be a separate
discussion). I thought of passing the value in the callback method
itself but now I am able to do it through attr_accessor. Thanks Leo for
the suggestion
-Kalpesh