2009-10-09 66 views

回答

45

你想用attr_readonly:为只读上市

属性将被用来创建一个新的记录,但更新操作会忽略这些字段。

class Customer < ActiveRecord::Base 
    attr_readonly :your_field_name 
end 
+0

这是对您的问题的正确答案,但对您的实际问题的“正确”解决方案有点不同......请参阅有关其他问题的评论。 – averell 2011-02-14 11:13:04

+0

否则+1回答。 – averell 2011-02-14 14:10:10

2

这场总是和由定义“正确”(即准确的现实表示)在插入时?

没有用户在第一次进入该字段时(以及在您的方案中:只有)时间?

+1

实际上用户根本没有输入,它由控制器设置。我想防止的是有人用修改后的请求修改它。 – fresskoma 2009-10-09 12:15:25

+8

在这种情况下,您根本不想乱动“只读”字段。你想要做的是在模型中使用'attr_protected'语句来防止字段被大量更新改变。甚至更好:使用'attr_accessible'使所有选定的字段可用于批量更新。 – averell 2011-02-14 14:08:18

+2

要在这里:我认为attr_readonly正确的用例是当改变该字段会破坏你的数据完整性。我有一个字段:valid_at,并且永远不应该改变这个字段,因为这意味着核心算法会出现一些错误。如果发生这种情况,这一切都在甲板上。所有数据可能不好。因此,我绝不需要改变它,而是宁愿防止它被其他代码中的错误所改变。如果它曾经试图改变,我想非常大声地炸毁。 – Houen 2016-04-13 06:58:48

相关问题