Как я могу сделать так, чтобы организация создавалась, только если пользователь НЕ вошел в систему?
Это немного расплывчато, поэтому позвольте мне сделать это немного яснее. У меня есть две таблицы; одна организационная таблица и другая пользовательская таблица. В организациях много пользователей, и пользователи принадлежат организации.
# модели / организации. Rb
class Organization < ActiveRecord::Base
has_many :users
Я сделал так, чтобы при регистрации пользователя создавалась организация вместе с его учетной записью.
# модели / user.rb
class User < ActiveRecord::Base
belongs_to :organization
before_create :create_organization
private
def create_organization
self.organization = Organization.create :name => self.name
end
Круто, это работает.
Но пользователи также должны иметь возможность зарегистрировать других людей для учетной записи, и этот новый пользователь organization_id
должен совпадать с current_user.organization_id
* # controllers / users_controller.rb *
def create
@user = User.new(params[:user])
if current_user
@user.organization_id = current_user.organization_id
end
end
Это решение ограничивает меня, потому что модель создает организацию, даже если пользователь уже вошел в систему. Они работают независимо (если я выберу либо before_filter
в модели, либо if current_user
в контроллере) , но не вместе.
Мне трудно заставить их работать вместе, потому что вы не можете получить доступ к current_user в пользовательской модели.
Я бы поместил Organization_id в качестве параметра для ссылки на регистрацию, но это не очень безопасно, поскольку это означает, что любой пользователь может просто изменить Organization_id в URL и автоматически получить учетную запись в другой организации, которая не принадлежит их.
Если это имеет значение, я использую Authlogic в качестве решения для аутентификации.
Что я могу сделать в пользовательской модели или в пользовательском контроллере для достижения этой цели?