dlu*_*biu 4 ruby validation lambda ruby-on-rails proc
我知道proc和lambda之间的区别。根据以下准则,在Rails模型验证中使用哪个更好:Proc或lambda?
程序:
return 从proc中退出将退出调用该方法的方法。Lambda:
return 从lambda中退出将退出lambda,并且调用该方法的方法将继续执行。但是我还没有看到能使它有所作为的验证:
validates :name, present: true, if: -> { assotiation.present? }
validates :name, present: true, if: proc { |c| c.assotiation.present? }
Run Code Online (Sandbox Code Playgroud)
我检查了rubocop,但没有发现任何建议。您知道在ruby / rails样式指南,rubocop或其他工具中哪个更好?
我能想到的唯一的区别是有可能使用早期的回报的?秒。也就是说,前者会很乐意验证,而后者会提出LocalJumpError:
validates :name, present: true,
if: -> { return false unless assotiation; assotiation.present? }
validates :name, present: true,
if: proc { return false unless assotiation; assotiation.present? }
Run Code Online (Sandbox Code Playgroud)
另外,我使用以下经验法则:严格比完全开放更好。因此,除非绝对确定您需要一个proc?是到处都可以使用的更好的工具。
| 归档时间: |
|
| 查看次数: |
172 次 |
| 最近记录: |