좋아요, 물어 보길 싫지만, 저는 이것에 집착하고 있습니다. I Rails에서 다형성 has_many를 중첩 된 형태로 구현하기
는 Permissions
을 통해 이 많은 Stands
은 (전시로하는 것은 의미)했다Users
했다.
그리고 그렇게 내 등록 컨트롤러는이처럼 보였다 :
def new
@registree = User.new
@registree.build_company
@registree.permissions.build.build_stand
end
그리고 내 양식은 다음과 같이 보았다 :
<%= simple_form_for @registree, url: register_path do |f| %>
... stuff ...
<%= f.simple_fields_for(:permissions) do |perms| %>
<%= perms.simple_fields_for(:stands) do |stand| %>
... stuff ...
<% end %>
<% end %
<% end %>
그리고 그것은했다!
그러나 고객은 Users
에 많은 Pavilions
(전시 기간)을 갖길 원했습니다.
그래서 has_many 관계를 다형성으로 만들기로했습니다.
class Permission < ActiveRecord::Base
attr_accessible :level, :user_id, :ownable_id, :ownable_type, :ownable_attributes
belongs_to :ownable, polymorphic: true
belongs_to :user
accepts_nested_attributes_for :ownable
end
을 그리고 ownable_type 지금 Stand
또는 Pavilion
중 하나가 될 수 있습니다
그래서 지금은 내 권한 모델은 다음과 같습니다.
몇 가지 간단한 테스트에서 작동합니다.
매직.
하지만이 경우 중첩 된 양식을 작성하는 방법에 대해 머리를 터지게 할 수 없습니다.
그래서 나의 새로운 발견 다형성 내 등록 컨트롤러에서이 라인은 그것이 ownable
일에있어, 내 Permission
모델의 스탠드에 직접 관계가 없기 때문에 가지 의미가있다 오류
@registree.permissions.build.build_stand
에게 던졌습니다 스탠드 또는 파빌리온이 될 수 있습니다.
그래서 나는 역시 작동하지 않는 build_ownable
을 시도했습니다.
그럼 간단히 폼에 중첩하여 Permission
을 무시했습니다. 내 User
모델
@registree.stands.build
에두고
그리고이.
accepts_nested_attributes_for :stands
폼을 표시하고 제출하는만큼 나를 얻었지 만 스탠드를 만들지 않았습니다. 그래서 분명히 관계가 제대로 구축되지 않습니다.
아무도 도움의 손길을 낼 수 있습니까?
감사합니다.당신의 polymorphic association에서