Witajcie,
[code]class Foo < ActiveRecord::Base
validates :gender_limit
def gender_limit
errors.add(:gender, “Spotkanie tylko dla kobiet”) unless current_user.male == true # Tu nie dziala current_user
end
end[/code]
Witajcie,
[code]class Foo < ActiveRecord::Base
validates :gender_limit
def gender_limit
errors.add(:gender, “Spotkanie tylko dla kobiet”) unless current_user.male == true # Tu nie dziala current_user
end
end[/code]
No i nie powinien działać. current_user to dostęp do sesji do której z modelu nie ma dostępu.
[code]# zakladajac ze masz cos w stylu klasy Meeting
@meeting.access_granted?(current_user)
def access_granted?(user)
end[/code]
ja mam coś podobnego tak zrobione
[code=ruby]class CostamController < ApplicationController
before_filter {|c| c.require_account_type [:lala, :zzz]}
class ApplicationController < ActionController::Base
def require_account_type(types)
unless types.include?(current_user.account_type.to_sym)
flash[:notice] = t(“users.account_types.not_allowed”)
redirect_to root_url and return
end
end[/code]
[quote=Artur79]ja mam coś podobnego tak zrobione
[code=ruby]class CostamController < ApplicationController
before_filter {|c| c.require_account_type [:lala, :zzz]}
class ApplicationController < ActionController::Base
def require_account_type(types)
unless types.include?(current_user.account_type.to_sym)
flash[:notice] = t(“users.account_types.not_allowed”)
redirect_to root_url and return
end
end[/code]
[/quote]
Przecież można tutaj zaimplementować chociażby CanCana.
Wracając do problemu autora tematu - Twój błąd nie ma większego związku z Authlogic, praktycznie każdy inny gem do uwierzytelniania zachowałby się tak samo. Po prostu current_user
to u Ciebie najprawdopodobniej metoda kontrolera, do której model nie ma dostępu (wspomniał o tym Seban).
Jeśli nadal omawianym modelem byłoby owe Meeting
, to powinieneś wykorzystać tutaj relację habtm (spotkanie ma wielu uczestników, ale także użytkownik uczestniczy w wielu spotkaniach), najlepiej through - wtedy dodatkowy model (przez który powiążesz model User i Meeting) będzie miał dostęp do obu modelów. Bez problemu da się wtedy zweryfikować, czy użytkownik to kobieta.
Dobrze myślę?
rav: racja, rozważałem cancana i inne pluginy do autoryzacji (najprostszy jaki widziałem to chyba http://github.com/nakajima/roleful) , ale używam tego tylko w kilku miejscach i w bardzo prosty sposób, zaledwie 3 role, wiec stwierdziłem że narazie coś takiego wystarczy