zoukankan      html  css  js  c++  java
  • Rails new, build, create, save方法区别

    原文:http://rubyer.me/blog/262

    向数据库插记录时经常会用到new, build, create。这三个方法很容易混淆,整理一下备忘:

    概述:

    save:rails中的save其实是create_or_update,新建或修改记录!不一定是新建,切记
    new :只是在内存中新建一个对象,操作数据库要调用save方法。
    create = new + 执行sql。
    build:与new基本相同,多用于一对多情况下。还有一个不同请看使用示例
    !:new!, create!, build!与new, create, build的区别是带!的方法会执行validate,如果验证失败会抛出导常。
    save是实例方法,而create, build, new是模型类的类方法

    使用示例

    设:Article与Comment是一对多关系

    @article = Article.new(params[:article])
    @article.save

    new后要调用save才会操作数据库

    注Article.build(params[:article])会报错,build不能这样用。

    @article = Article.create(params[:article])

    会直接在数据库里插入一条记录

    @comment = @article.comments.build

    与new方法基本一样,有人说build会自动设置外键值,其实我测试时发现build和new都可以设置外键。

    如果你处理一个“has_one”一对一关系时,这样写:

    @profile = @user.build_profile
  • 相关阅读:
    setsid
    dup
    信号量
    linux标准输入输出
    linux守护进程范例
    c++字符串操作
    浏览器缓存
    bfc
    苹果手机自制铃声
    vue-cli 源码解读
  • 原文地址:https://www.cnblogs.com/klobohyz/p/2248548.html
Copyright © 2011-2022 走看看