Ruby on Rails:关于validates_presence_of的问题

11

我在基于ActiveRecord的模型中有一个关系,看起来像这样:

belongs_to :foo

我的模型应始终在其中定义 foo 才能有效。 我的问题是,在使用 validates_presence of 时,哪一个是适当的:

validates_presence_of :foo
或者
validates_presence_of :foo_id

当然,这里假设foo_id是适当的外键,如果您没有更改关联键,则默认情况下它就是适当的外键。

3个回答

8
第一种方法:validates_presence_of :foo (虽然我认为第二种方法也可以)。通常,Ruby验证助手适用于模型名称而不是显式列名。您可以使用此方法以及validates_associated来同时验证关联实体的状态和存在性。

1
您可能想考虑使用validates_associated,这将确保关联是有效的。

如果我没记错的话,validates_associated和validates_presence_of是互斥的。我希望确保关联对象是模型的一部分。按照定义,它本身应该是有效的。 - randombits
你需要同时使用 validates_associated 和 validates_presence_of。请参考文档链接的其他评论。 - Richard Cook

0

我使用 validates_presence_of :foo_id。它有效。


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