dostępność pola w formularzu

Mam prosty formularz dodawania komentarza, a w nim pole active, które może przyjmować wartość false lub true co będzie skutkowało wyświetleniem komentarza na stronie lub nie.

Chciałbym tak zrobić, żeby to pole mógł edytować tylko administrator. Samo usunięcie/ukrycie pola z formularza dla usera rozumiem nic nie da.

Jak się takie coś powinno realizować ?

  1. W migracji dla tego pola pamiętaj o:
t.boolean :active, :null => false, :default => false
  1. W modelu zabezpiecz pole przed zmianami z formularza:
attr_protected :active
  1. W akcji dostępnej tylko dla administratora ręcznie ustawiaj wartość atrybutu:
@comment.active = true

Oczywiście pola nie należy dodawać do formularza dostępnego dla zwykłych userów. Krok 2 to zabezpieczenie przed cwaniakami.

Obczaj też : http://github.com/ryanb/trusted-params

Warto zainteresowac sie
http://github.com/aenima/base-auth

Za pomoca tego plugina w widoku mozesz zorobic

[code=ruby]- allow(:user => :admin?) do
= t.boolean :active, :null => false, :default => false

  • end[/code]

właśnie prawie skończyłem instalować declarative_authorization, ale jeszcze muszę rozpatrzeć jak ten gem podchodzi do rozwiązania tej sprawy.

[quote=seeweer]Warto zainteresowac sie
http://github.com/aenima/base-auth

Za pomoca tego plugina w widoku mozesz zorobic

[code=ruby]- allow(:user => :admin?) do
= t.boolean :active, :null => false, :default => false

  • end[/code]
    [/quote]
    Dobre. jakos mi to umkneło w dokumentacje base-auth. Jest jakis odpowiednik tego w Acl9 ?

Dziękuje za podpowiedzi, mini-panel admina już śmiga :slight_smile: