- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用下面的代码创建新记录或更新现有记录。创建有效,更新无效。
Signup.find_or_initialize_by(email: "text@example.com") do |signup|
signup.name = "John Doe"
signup.save
end
#Signup.find(email: "test@example.com").name = nil
不确定为什么 save
也会更新记录。 FWIW,我在下面尝试了一种不同的语法,它确实有效,不确定区别,但我想保留 find_or_initialize
block 版本。
signup = Signup.find_or_initialize_by(email: "text@example.com")
signup.name = "John Doe"
signup.save
#Signup.find(email: "test@example.com").name = "John Doe"
最佳答案
只有在数据库中找不到匹配的行时才会调用该 block :您的第一个版本永远不会修改具有请求的电子邮件地址的现有行。
如果这就是您想要做的,那么您的第二个示例就是可行的方法。
关于ruby - Rails first_or_initialize 不更新记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25841612/
我正在尝试弄清楚如何使用 ActiveRecord 来执行以下伪代码: rows_updated = UPDATE my_table SET my_column="abc" WHERE id=123
我正在使用下面的代码创建新记录或更新现有记录。创建有效,更新无效。 Signup.find_or_initialize_by(email: "text@example.com") do |signup
我有以下代码,它工作正常,没有错误,但模型永远不会被保存...... myarray.each do |item| r = MyModel.unscoped.where(:site_id =>
我有一个 Purchase那个has_one :shipping_address . 在我的一种方法中,我有这个: @shipping_address ||= purchase.build_shipp
有没有办法重写下面的流程,目前使用find_or_initialize_by,使用joins方法? 对于上下文 - 我有 users(员工)在系统中记录他们的 attendances(user 有很多
我是一名优秀的程序员,十分优秀!