0
하는 방법을 만드는. 이것은 내가이 사용하고자하는 방법입니다 : is_referral?
및 label
이 Account
클래스의 두 인스턴스 메소드는내가 두 가지 모델이 연관된 객체
def sorted
partition { |account| account.is_referral?}.each do |a|
a.sort! {|a,b| a.label <=> b.label}
end.flatten
end
.
따라서 User.first.accounts.sorted
으로 계정을 정렬 할 수있었습니다. 그때 내가 무언가를 범위를 만들 경우이 작업을 수행하고 수 있어요
그것을 확장 :
scope :filtered, lambda { |filter|
if filter == Listing::FILTER_INACTIVE
where("status = ?", Account::STATUS_INACTIVE)
elsif filter == Account::FILTER_ACTIVE
where("status = ?", Account::STATUS_ACTIVE)
end
} do
def sorted
partition { |account| account.is_referral?}.each do |a|
a.sort! {|a,b| a.label <=> b.label}
end.flatten
end
end
는 지금은
User.accounts.filtered(Account::FILTER_ACTIVE).sorted
를 사용할 수 있습니다. 이것은
scope.class
이
ActiveRecord::Relation
이고 이
Array
인 결과라고 생각합니다.
scope :sorted, lambda { |object|
object.partition { |account| account.is_referral?}.each do |a|
a.sort! {|a,b| a.label <=> b.label}
end.flatten
}
하지만이 nil.partition
에 대한 NoMethodError
발생 :
도움을 주시면 감사하겠습니다.
아이디어를 주셔서 감사합니다. 그러나 결과적으로 빈 배열이 나타납니다. 정확한 realtion은'has_many : accounts, : through => : calendars'이지만, 당신의 메소드를 정의 할 때 (Calendar 또는 User에서) 빈 배열을 얻습니다. – shime
나는 왜 이것을 얻었고 귀하의 게시물에 설명을 추가했는지 발견했습니다. 다시 한번 감사합니다. – shime