![]() |
1
114
ID只是属性保护,这就是为什么你不能使用批量分配来设置它。但是,当手动设置时,它仅起作用:
我不确定最初的动机是什么,但我在将ActiveHash模型转换为ActiveRecord时会这样做。ActiveHash允许您使用ActiveRecord中的语义,但您不必迁移和创建表,而是在每次调用时产生数据库开销,只需将数据存储在YML文件中。数据库中的外键引用了YML中的内存ID。 ActiveHash非常适合选择列表和小表,这些表很少更改,而且只由开发人员更改。因此,当从activeHash转到activeRecord时,最简单的方法就是保持所有的外键引用相同。 |
![]() |
2
28
尝试
这会给你你想要的。 |
![]() |
3
27
您也可以使用类似的方法:
尽管如 docs ,这将绕过批量分配安全。 |
![]() |
4
17
轨道4:
其他Rails 4答案 不 为我工作。他们中的许多人 出现 在使用Rails控制台进行检查时更改,但在检查MySQL数据库中的值时,它们保持不变。其他的答案有时只能奏效。
至少对于MySQL,指定
如果你改变
一般来说,我会使用
|
![]() |
5
6
实际上,事实证明,做以下工作:
|
![]() |
6
6
正如杰夫指出的那样,ID的行为就像是被ATTR保护了一样。要防止这种情况发生,需要重写默认受保护属性的列表。在属性信息可能来自外部的任何地方都要小心执行此操作。出于某种原因,ID字段是默认保护的。
(用ActiveRecord 2.3.5测试) |
![]() |
7
6
我们可以通过默认值覆盖受保护的属性
|
![]() |
8
5
这并不是你通常想要做的事情,但是如果你需要用一组固定的ID填充一个表(例如,当使用rake任务创建默认值时),并且你想要覆盖自动递增(这样每次你运行任务时,表都是用相同的ID填充),那么它会很好地工作:
|
![]() |
9
2
放这个 创建一个 函数位于seeds.rb的顶部,然后使用它在需要显式ID的地方创建对象。
像这样使用
而不是使用
|
![]() |
10
1
这是一个类似的问题,必须覆盖
然后:
回电工作正常。 祝你好运!. |
![]() |
11
0
对于Rails 3,最简单的方法是使用
对于种子数据,绕过验证可能是有意义的,您可以这样做:
我们实际上向ActiveRecord::Base添加了一个助手方法,该方法在执行种子文件之前立即声明:
现在:
对于Rails 4,您应该使用strong参数而不是受保护的属性。如果是这种情况,您只需在不向传递任何标志的情况下分配和保存
|
![]() |
12
0
在带有PostgreSQL 9.5.3的Rails 4.2.1中,
|
![]() |
13
0
可以按SQL插入ID:
|
![]() |
Animesh Arya · 关联模型的Rspec 2 年前 |
![]() |
Kellen · 查看$卷展栏功能列表 2 年前 |
![]() |
Akshit Thakur Ak · 我怎样才能把铁轨停下来? 2 年前 |
![]() |
solidsnake99 · Rails db:如何绕过验证 2 年前 |
![]() |
Spyros · 从数组中删除nil值,并从引用数组中删除相应的项 2 年前 |
![]() |
Pauli-E · 当div打开并滚动到屏幕上时,向div添加类 2 年前 |
![]() |
ejoka · 如何使用Rails 7模型属性作为CSS标记值 2 年前 |