[RUBY-ON-RAILS] 액티브, has_many : 통해, 그리고 다형성 협회
RUBY-ON-RAILS액티브, has_many : 통해, 그리고 다형성 협회
여러분,
확실히 내가 올바르게 이해 만들고 싶어. 그리고 여기에 상속의 경우를 무시하십시오 (SentientBeing) 대신에 has_many에서 다형성 모델에 집중하려고 : 관계를 통해. 말했다, 다음은 고려 ...
class Widget < ActiveRecord::Base
has_many :widget_groupings
has_many :people, :through => :widget_groupings, :source => :person, :conditions => "widget_groupings.grouper_type = 'Person'"
has_many :aliens, :through => :widget_groupings, :source => :alien, :conditions => "video_groupings.grouper_type = 'Alien'"
end
class Person < ActiveRecord::Base
has_many :widget_groupings, :as => grouper
has_many :widgets, :through => :widget_groupings
end
class Alien < ActiveRecord::Base
has_many :widget_groupings, :as => grouper
has_many :widgets, :through => :widget_groupings
end
class WidgetGrouping < ActiveRecord::Base
belongs_to :widget
belongs_to :grouper, :polymorphic => true
end
완벽한 세상에서 내가 좋아하는 일을 할, 위젯과 사람이 주어진 싶습니다
widget.people << my_person
나는이 작업을 수행 할 때, 나는 '그룹화'의 '유형'을 발견했습니다 항상 widget_groupings에서 null입니다. 그러나 다음과 같은에 나는 경우 :
widget.widget_groupings << WidgetGrouping.new({:widget => self, :person => my_person})
모든 내가 일반적으로 예상 한 것처럼 작동합니다. 나는 내가이 아닌 다형성 협회 발생하고 그냥이 뭔가 특정이 사용 사례 또는 I 잠재적 버그를 응시하고있어 경우라면 알고 싶어 본 적이 생각하지 않습니다.
어떤 도움을 주셔서 감사합니다!
해결법
-
==============================
1.이 기능을 나누기 레일 3.1.1 알려진 문제가 있습니다. 이 문제가 첫 번째 시도 업그레이드가있는 경우, 3.1.2에서 수정 된 것
이 기능을 나누기 레일 3.1.1 알려진 문제가 있습니다. 이 문제가 첫 번째 시도 업그레이드가있는 경우, 3.1.2에서 수정 된 것
당신은 너무 가까이있어. 소스 옵션 : 문제는 당신이를 남용하고있다. : 다형성 belongs_to 관계에 소스해야 포인트. 당신이 정의하려는 관계 SOURCE_TYPE을 : 그럼 당신이 할 필요가 지정됩니다.
위젯 모델이 수정 프로그램은 당신이 찾고있는 정확하게 할 수 있도록해야한다.
class Widget < ActiveRecord::Base has_many :widget_groupings has_many :people, :through => :widget_groupings, :source => :grouper, :source_type => 'Person' has_many :aliens, :through => :widget_groupings, :source => :grouper, :source_type => 'Alien' end
-
==============================
2.위에서 언급 한 바와 같이,이 때문에에 버그로 레일 3.1.1하지 작업을 수행 : 소스 있지만 레일 3.1.2에서 수정 된 것
위에서 언급 한 바와 같이,이 때문에에 버그로 레일 3.1.1하지 작업을 수행 : 소스 있지만 레일 3.1.2에서 수정 된 것
-
==============================
3.많은 사람들이 있습니다 통해 다형성이 함께 작동하지 않습니다. 당신이 직접 액세스하려고하면 오류가 발생합니다. 내가 잘못 아니에요 경우에, 당신은 손 쓰기 widget.people 푸시 루틴에 있습니다.
많은 사람들이 있습니다 통해 다형성이 함께 작동하지 않습니다. 당신이 직접 액세스하려고하면 오류가 발생합니다. 내가 잘못 아니에요 경우에, 당신은 손 쓰기 widget.people 푸시 루틴에 있습니다.
나는 아직 구현되지 않은 뭔가를, 그것은 버그라고 생각하지 않는다. 나는 모든 사람들이 그것을 사용할 수있는 경우가 있기 때문에 우리는이 기능에서 볼 상상.
from https://stackoverflow.com/questions/1683265/activerecord-has-many-through-and-polymorphic-associations by cc-by-sa and MIT license
'RUBY-ON-RAILS' 카테고리의 다른 글
[RUBY-ON-RAILS] " ''생산 '환경에 대한 secret_key_base` 없음"오류를 해결하는 방법 (4.1 레일) (0) | 2020.02.05 |
---|---|
[RUBY-ON-RAILS] 고유 객체 ID 필드 대 복합 기본 키 (0) | 2020.02.05 |
[RUBY-ON-RAILS] 레일 : update_attributes 대 update_attribute (0) | 2020.02.05 |
[RUBY-ON-RAILS] 레일 응용 프로그램에 부트 스트랩 3 설치 (0) | 2020.02.05 |
[RUBY-ON-RAILS] 레일 루비 수집 경로 부재 경로 차이? (0) | 2020.02.05 |