iwa*_*bed 2 action controller model ruby-on-rails ruby-on-rails-3
这是一个Rails新手问题:
当我呼叫create()
模型时,它是否绕过相关的控制器create
动作?
例如,这不是我的标签控制器#create action:
user.tags.create(:content => new_tag)
Run Code Online (Sandbox Code Playgroud)
但是,如果我tags#create
从表单POST到路由,那么它的工作正常.
我假设调用user.tags.create
将调用控制器操作并始终在创建时运行其中的代码,但显然它只在POST到该路由期间.
我在这里错过了什么?
编辑:
有没有办法进行调用,以确保控制器创建代码运行?我有一些代码可以通过永久链接查找标记,并在必要时创建一个新标记,否则重用现有标记.使用model.create()不运行任何代码.我可能会"做错了":P
模型对控制器一无所知,它只是一个表示存储在数据库中的状态的对象,可能还有一些额外的封装行为.控制器是响应对服务器发出的请求的对象.虽然默认的脚手架将修改您的模型,但控制器甚至不必使用模型.
控制器和模型是断开连接的,但只是逻辑上相关的类.
如果您希望模型的所有用户都可以使用代码,那么请为模型添加方法.然后从您的控制器以及您希望该行为的任何其他位置调用该方法.