Was*_*per 10 ruby-on-rails ruby-on-rails-3.2 ruby-on-rails-4
我正在阅读一些Rails 3和4教程并遇到一些我喜欢的一些见解:
关于Create操作,Model.new和Model.create之间有什么区别.我以为你确实使用create控制器中的方法来保存例如.@post = Post.create(params[:post])但看起来我错了.任何见解都非常感谢.
def new
@post = Post.new
end
def create
@post = Post.new(post_params)
@post.save
redirect_to post_path(@post)
end
def post_params
params.require(:post).permit(:title, :body)
end
Run Code Online (Sandbox Code Playgroud)
def new
@post = Post.new
end
def create
@post = Post.create(post_params)
@post.save
redirect_to post_path(@post)
end
def post_params
params.require(:post).permit(:title, :body)
end
Run Code Online (Sandbox Code Playgroud)
我有两个问题
@post = Post.create(post_params)吗?Pie*_*ois 23
Model.new
下面给出params实例化并初始化Post模型:
@post = Post.new(post_params)
Run Code Online (Sandbox Code Playgroud)
您必须运行save才能在数据库中保留您的实例:
@post.save
Run Code Online (Sandbox Code Playgroud)
Model.create
以下实例化,初始化并在数据库中保存给定params的Post模型:
@post = Post.create(post_params)
Run Code Online (Sandbox Code Playgroud)
您不需要运行该save命令,它已经内置.
这里有更多信息new
这里有更多信息create
该Model.new方法创建一个 nil 模型实例,并且该Model.create方法还尝试将其直接保存到数据库中。
Model.create方法创建一个对象(或多个对象)并将其保存到数据库(如果验证通过)。无论对象是否成功保存到数据库,都会返回结果对象。
object = Model.create不需要任何object.save方法将值保存在数据库中。
在Model.new方法中,新对象可以实例化为空(不传递构造参数)
预先Model.new(params[:params])设置属性但尚未保存在数据库中(传递键名称与关联表列名称匹配的哈希值)。
之后object = Model.new,我们需要通过以下方式保存对象object.save
| 归档时间: |
|
| 查看次数: |
8844 次 |
| 最近记录: |