【发布时间】:2020-08-14 23:15:02
【问题描述】:
假设我有这两个类
class Gadget < ActiveRecord::Base
has_many :widgets
end
class Widget < ActiveRecord::Base
belongs_to :gadget
# table has string attribute .color
end
假设数据库包含一个小工具和一个小部件,每个小部件都有id = 1,小部件的颜色为nil。
修改使用.find检索到的记录
g = Gadget.first
w = g.widgets.find { |widg| widg.id == 1 }
w.color = "blue"
g.widgets.first.color
=> "blue"
修改使用.find_by检索到的记录
g = Gadget.first
w = g.widgets.find_by(id: 1)
w.color = "blue"
g.widgets.first.color
=> nil
我无法解释这种差异。
【问题讨论】:
-
是否有可能不止一个 id = 1 的小部件?
-
假设 id 是唯一的。
-
确定 g.widgets.first 在这两种情况下是相同的 id 吗?
-
我们甚至可以说这个小工具只有一个小部件。
-
迷人的行为
标签: ruby-on-rails ruby-on-rails-4 activerecord rails-activerecord