資料庫方案
create_table "user", force: :cascade do |t|
t.string "name"
t.boolean "active", default: false
end
模型
class User < ApplicationRecord
default_scope { where(active: true) } # removing this line and it works
end
u = User.create!(name: "test")
# ^^^^ this creates a User with active: true
u.active? # true (should be false)
當我洗掉default_scope它按預期作業。
為什么要default_scope更改我的默認值。據我所知default_scope,僅用于查詢而不用于創建?
uj5u.com熱心網友回復:
在default_scope創建/構建記錄時也會應用。更新或洗掉記錄時不應用它。
參考:https ://api.rubyonrails.org/classes/ActiveRecord/Scoping/Default/ClassMethods.html#method-i-default_scope
如果您只需要查詢使用范圍,請考慮改用普通范圍。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/471095.html
上一篇:嵌套回圈內變數的范圍
下一篇:嘗試本地提交時預提交導致以下錯誤
