Rails模型:如何在Rails模型中使字段只读?

3

我已经为表项定义了is_first属性。

在模型Item中,我想根据前面是否存在一个项目来设置这个属性的值。
我不希望is_first属性可写。请建议我该怎么做?

1个回答

9

您需要在模型文件中使用attr_readonly

attr_readonly :is_first

如何验证是否允许写入。我在Rails控制台中设置了is_first的值,它反映相同(尽管尚未保存)。 - Maddy.Shik
你应该能够创建记录。然后,如果您尝试更新字段,则不应该能够这样做。您可以在控制台中进行测试。 - Matteo Alessani
但在我的情况下,即使我创建新记录,我也不希望访问此属性,它应该仅通过模型访问,而不可在外部访问,即使是为了显示目的。 - Maddy.Shik
所以,也许你可以使用像 before_save 或 before_create 这样的回调函数来让模型允许或不允许修改字段。 - Matteo Alessani
我正在使用回调函数来设置字段,但为了使其不可访问,我修改了属性本身。请参见http://stackoverflow.com/questions/5465628/rails-model-how-to-make-a-attribute-protected-or-private-that-is-not-visible-out - Maddy.Shik

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接