标签: validates-associated

更好的有关Rails 3的validates_associated方法?

Rails 3包括validates_associated在保存嵌套模型时自动调用的Rails .该方法的问题是消息很糟糕 - "模型无效"

Rails 2上有一些帖子攻击了这个问题:

而且可能还有更多.如果这些帖子中描述的Rails 3兼容,那将是一个很好的版本.主要的改进将包括为什么关联的模型失败.

ruby-on-rails validates-associated

18
推荐指数
2
解决办法
8746
查看次数

validates_associated不检查关联的存在

任何人都可以弄清楚这里发生了什么?我能够以我想要的方式使我的代码工作,但我无法弄清楚为什么validates_associated没有按照我的预期工作.这是我的代码片段:

class Flag < ActiveRecord::Base
  belongs_to :user
  belongs_to :post

  # allow only one flag per post per user
  validates_uniqueness_of :user_id, :scope => :post_id

  validates :user_id, :post_id, :presence => true
  validates_associated :user, :post

  attr_accessible :user_id, :post_id
end
Run Code Online (Sandbox Code Playgroud)

使用此代码,我无法使用user_id == nil保存标志.我可以使用user_id == 12345保存一个标志(即某些user_id不在数据库中).这就是validates_associated API规范所说的:

validates_associated(*attr_names)

验证关联的对象是否全部有效.适用于任何类型的协会.
...
注意:如果尚未分配关联,则此验证不会失败.如果要确保关联存在且保证有效,则还需要使用validates_presence_of.

我能够通过使用它来获得所需的行为,而不是:

  validates :user, :post, :presence => true
Run Code Online (Sandbox Code Playgroud)

我对API规范的理解是validates_associated检查关联的表以查看是否存在具有与Flag 的外键匹配的行,前提是外键是非nil.任何人都可以对此提出任何见解吗?我误解了validates_associated应该如何工作?

ruby-on-rails validates-associated

12
推荐指数
1
解决办法
7478
查看次数