I'm trying to set a specific order to an association, but I keep getting the default scope order definition.
What am I missing?
class Pattern < ActiveRecord::Base
default_scope { order('sort, title') }
has_and_belongs_to_many :children,
:class_name => 'Pattern',
:join_table => 'patterns_patterns',
:association_foreign_key => 'child_id',
:foreign_key => 'parent_id',
:order => 'patterns_patterns.updated_at'
end
SELECT "patterns".* FROM "patterns" INNER JOIN "patterns_patterns" ON "patterns"."id" = "patterns_patterns"."child_id" WHERE "patterns_patterns"."parent_id" = ? ORDER BY sort, title [["parent_id", 1]]
SELECT "patterns".* FROM "patterns" INNER JOIN "patterns_patterns" ON "patterns"."id" = "patterns_patterns"."child_id" WHERE "patterns_patterns"."parent_id" = ? [["parent_id", 7]]
class Pattern < ActiveRecord::Base
has_and_belongs_to_many :children,
:class_name => 'Pattern',
:join_table => 'patterns_patterns',
:association_foreign_key => 'child_id',
:foreign_key => 'parent_id',
:order => 'patterns_patterns.updated_at'
end
Hi Colin, thank you for your answer.I just realized that my problem is bigger than that. I removed the default_scope and my query now is "orderbyless".SELECT "patterns".* FROM "patterns" INNER JOIN "patterns_patterns" ON "patterns"."id" = "patterns_patterns"."child_id" WHERE "patterns_patterns"."parent_id" = ? [["parent_id", 7]]
Why the order is been ignored?class Pattern < ActiveRecord::Base
has_and_belongs_to_many :children,
:class_name => 'Pattern',
:join_table => 'patterns_patterns',
:association_foreign_key => 'child_id',
:foreign_key => 'parent_id',
:order => 'patterns_patterns.updated_at'
end
class Pattern < ActiveRecord::Base
default_scope { order('sort, title') }
has_and_belongs_to_many :children,
-> { order('patterns_patterns.id') },
:class_name => 'Pattern',
:join_table => 'patterns_patterns',
:association_foreign_key => 'child_id',
:foreign_key => 'parent_id'