Has_many, :through

Cześć, potrzebuję pomocy w przygotowanej rzeczy.

Chcę zrobić relacje użytkownika z rolami. Wielu użytkowników może mieć wiele roli.

To co mam:

[code]class Role < ActiveRecord::Base
has_many :premissions
has_many :users, :through => :premissions
end

class Premission < ActiveRecord::Base
belongs_to :user
belongs_to :premission
end

class User < ActiveRecord::Base
has_many :premissions
has_many :roles, :through => :premissions
end[/code]

[code]WIDOK, tutaj chciałbym wykonać operację dodania/edycji uprawnień.

= form_for @premission do |f|

.actions
= f.submit ‘Save’[/code]
Tabela: Roles (name) (read, edit itd.)
Tabelka: Premissions (role_id, user_id)

Chcę osiągnąć taki efekt: wchodzimy w miejsce gdzie zarządzamy uprawnieniami użytkownika, wybieramy użytkownika, pojawia się lista z checkoboksami (tabelka role), gdzie możemy pozaznaczać do czego ma dostęp użytkownik.

Nie mam pojęcia od czego nawet zacząć, także jakby mnie ktoś naprowadzić i podrzucił linki to będę bardzo wdzięczny.

Mogę sobie coś takiego łatwo zrobić form_tagiem ale to będzie patologia i nie będę miał edycji.

Dzięki.

Nie jestem pewny, ale może accepts_nested_attributes_for i fields_for? Poza tym pERmissions;)

To jest dobre rozwiązanie.

w modelu:

accepts_nested_attributes_for :roles

w widoku

= form_for @permition do |f| = f.fields_for :roles do |role_form| role_form.text_field :foo
W kontrolerze… nie musisz nic robic :wink:

Poza tym zobacz sobie formtastic lub simple_form (może na początek lepiej to drugie).

Wtedy musisz zrobić simple_form_for i simple_fields_for, a simple_form zrobi 80% pracy za Ciebie. Tym bardziej jak się trzeba z checkboxami chrzanić.