ActiveRecord 컬렉션 (아래 참조) 내에서 리디렉션 개체를 만들기위한 factory_build 클래스 메서드를 만들려고합니다.ActiveRecord 컬렉션 및 사용자 정의 메서드
예 : @ website.redirects.factory_build (: code => 301)은 PermenantRedirect 개체의 새 인스턴스를 반환합니다. 그러나 factory_build 클래스 메서드를 호출 할 수는 있지만 @website에 대한 primary_key에 액세스 할 수는 없습니다. 컬렉션 내부에서 @ website.id에 액세스 할 수있는 방법이 있습니까? 아니면 메서드 호출에 전달해야합니까? 다른 모든 제안도 환영 할 것입니다. 아마도 올바른 접근 방식으로이 문제를 해결하지 않을 것입니다. 감사.
class Website < ActiveRecord::Base
has_many :redirects
has_many :permenant_redirects
has_many :temporary_redirects
end
# Redirect is an abstract class it uses Rails Single Table Inheritance
class Redirect < ActiveRecord::Base
def self.factory_build(attributes)
status_code = attributes.delete(:code)
case status_code
when 301
Website.find(...).permenant_redirects.new(attributes)
when 302
Website.find(...).temporary_redirects.new(attributes)
else
raise InvalidStatusCodeError
end
end
end
class TemporaryRedirect < Redirect
def status
302
end
end
class PermenantRedirect < Redirect
def status
301
end
end
'웹 사이트'와 '리디렉션'의 관계와 기능에 대해 자세히 설명해 주시겠습니까? 'Redirect'의 다른 하위 클래스는 다른 기능을 가지고 있습니까? 아니면 코드의 범위입니까? –