Account < AR
has_many :deposits
accepts_nested_attributes_for :deposits
attr_accessible :max_amount
end
Deposit < AR
belongs_to :account
attr_accessible :amount
validate :validates_amount_less_than_max_amount
def validates_amount_less_than_max_amount
# How do you write this method? When an Account is being created with a nested
# Deposit, it should do this validation, but account is nil until
# saved, so @contribution can't access the :max_amount and validate from it.
# Solution?
end
end
1
A
回答
0
这里的答案:
补丁定于2.3.5。如果您现在需要该功能,则必须应用它及其依赖项。
0
使用此验证,符合市场预期:
def validates_amount_less_than_max_amount
errors.add(:amount, 'is more than max amount') if self.amount > account.max_amount
end
但你不能用new
建立在同一时间的账户及存款,因为你在上面指出。尝试在交易中创建帐户/存款:
>> Account.transaction do
>> a = Account.create!({:max_amount => 1000})
>> a.deposits_attributes = [{:amount => 1500}]
>> a.save!
>> end
ActiveRecord::RecordInvalid: Validation failed: Deposits amount is more than max amount
有关更多示例,请参见what's new in edge rails 2.3。
相关问题
- 1. Rails的验证孩子与父母
- 2. 嵌套模型和父验证
- 3. ASP验证器:仅验证小写字母和大写字母
- 4. 嵌套UpdatePanel验证
- 5. Firebase。验证孩子记录的规则
- 6. SQLite3记录验证
- 7. 验证CNAME记录
- 8. 验证嵌套模型?
- 9. 验证嵌套的ViewModels
- 10. 嵌套控件验证
- 11. Aurelia验证嵌套对象
- 12. rails验证嵌套属性
- 13. 嵌套形式验证
- 14. 必需的验证器和比较验证器不起作用!
- 15. Rails 3失败验证父模型验证嵌套属性失败
- 16. XML验证,嵌套XSD和UNC路径
- 17. 基于父属性验证孩子
- 18. 验证该部分的总和等于与父母总/儿童记录
- 19. SQL JOIN父母和孩子和GET父母和孩子记录计数
- 20. @PreAuthorize(permitAll)仍需要验证
- 21. 我需要验证jwt吗?
- 22. 需要验证html样式
- 23. 需要帮助jQuery验证
- 24. 验证是否需要TCP?
- 25. TypeError:LocalStrategy需要验证回调
- 26. 407需要代理验证
- 27. 需要验证对话框
- 28. AngularJS下拉需要验证
- 29. 验证表单NG-需要
- 30. 需要验证CRM凭据
是的,这将工作,但没有办法将其移入模型? – Gavin 2009-11-07 20:42:17
绝对。这只是一个irb会话;将其移入'Account.create_with_deposit!(attributes)'。 – 2009-11-08 15:50:06