静态类型,编译时检查的程序员大脑,在这里,正在努力使用rails函数调用。
在我们指定has_many
的模型中,我们可以指定排序顺序,如has_many :requirements, -> { order(created_at: :asc) }, :dependent => :destroy
。
但是当我们有像这样的多态关联时
has_many :text_fields, as: :describable, :dependent => :destroy
我们如何添加排序lambda?
我已经尝试了所有可能的语法排列,除了显然是正确的。
答案 0 :(得分:1)
您已澄清它是您要订购的子记录(text_fields)。您可以使用default_scope
,如下所示:
class ParentModel < ApplicationRecord
has_many :text_fields, as: :describable, :dependent => :destroy
end
class TextField < ApplicationRecord
default_scope { order(created_at: :asc) }
end
但在这样做之前要认真思考,因为Redemption。除此之外,您无法覆盖default_scope中定义的order
。我不熟悉requirements
,但您可能无法覆盖requirements
中定义的顺序。
我认为你可以更好地创建像这样的范围:
class ParentModel < ApplicationRecord
has_many :text_fields, as: :describable, :dependent => :destroy
end
class TextField < ApplicationRecord
scope :default_order, -> { order(created_at: :asc) }
end
当您希望以这种方式订购记录时,请明确地调用它:
TextField.all.default_order
或
parent_record.text_fields.default_order