【发布时间】:2012-06-30 02:24:33
【问题描述】:
当我执行 Model.create 方法时,如果我为 :id 指定一个值,它稍后会被取消。示例:
Model.create (
:id => 50,
:name => Joe,
:enabled => yes
)
相反,我要做的是使用 .new 并将其存储在类变量中,通过类变量存储我的 id 值,然后最后调用保存:
m = Model.new (
:name => Joe,
:enabled => yes
)
m.id = 50
m.save
我正在尝试在种子.rb 中执行此代码,这不是非常干燥的代码。我怎样才能更好地做到这一点并获得相同的结果?
【问题讨论】:
-
为什么需要这样做?它在 Rails 约定之外,所以确保它不会是 DRY(Rails “惩罚”你超出约定)。
-
这甚至不是 Rails 约定的问题,而是关系数据库约定的问题。如果您依赖的主键在您的逻辑中具有某些值 (
do_something if user.id == 50),您需要重新考虑您在做什么。
标签: ruby-on-rails ruby activerecord activemodel seed