在Ruby on Rails 4中,让我们说父母有很多孩子。然后我想reference only the persisted records in an active record association,并按照链接接受的答案。这很好用:
class Parent < ActiveRecord::Base
has_many :children, dependent: :destroy do
def persisted
collect { |a| a if a.persisted? }
end
end
现在,我想订购相关记录:
has_many :children, dependent: :destroy, -> { order 'id asc' } do
但这会引发错误:
ParentsController中的SyntaxError #index
... trunk / app / models / parent.rb:3:语法错误,意外的keyword_do_block,expecting =&gt; ... trunk / app / models / parent.rb:49:语法错误,意外的keyword_end,期待输入结束
然而,这确实有效:
has_many :children, -> { order 'id asc' } do
我甚至找不到关于如何在关联上使用do_block的文档。任何帮助表示赞赏。
答案 0 :(得分:3)
我的方法有两个问题:
所以,这段代码确实有效:
has_many :children, -> { order 'id asc' }, { dependent: :destroy } do
def persisted
collect { |a| a if a.persisted? }
end
end
参考文献: