Это звучит так, как будто вы пытаетесь сделать:
У вас есть users
, который может быть одним из трех groups
. Если это не совсем правильно, поможет небольшое разъяснение.
Поскольку AuthLogic заботится только о своих специальных полях, создание и использование других полей в вашей пользовательской модели не так уж сложно.
Каждый user
может быть составлен примерно так:
#The Authlogic Fields
t.string :username, :null => false
t.string :crypted_password, :null => false
t.string :password_salt, :null => false
t.string :persistence_token, :null => false
#Your field to identify user type
t.integer :user_type
#If your user is a customer, you would populate these fields
t.integer :customer_name
...
#If your user is a company, you would populate these fields
t.integer :company_name
...
#If your user is a vendor, you would populate these fields
t.integer :vendor_name
...
Я не уверен, что вы подразумеваете под "наследованием одной таблицы", но если вы хотите сохранить информацию о vendor
в таблице отдельно от таблицы пользователей (на самом деле нет причин, если вы ДЕЙСТВИТЕЛЬНО не обеспокоены производительностью) Вы можете просто связать свои модели так:
class User < ActiveRecord::Base
has_many :customers, :companies, :vendors
end
class Customer < ActiveRecord::Base
belongs_to :user
end
class Company < ActiveRecord::Base
belongs_to :user
end
class Vendor < ActiveRecord::Base
belongs_to :user
end
В этом случае, поскольку у пользователя не будет ассоциаций с 2 из 3 типов пользователей, вы вынуждены использовать ассоциацию has_many
, которая прекрасно работает со случаем ассоциации 0. Вам просто нужно сделать несколько проверок в своем коде, чтобы убедиться, что вы не удвоитесь.