class User < ActiveRecord::Base
include Tenancy
has_secure_password
validates :username, presence: true, uniqueness: { case_sensitive: false }
validates :full_name, presence: true, uniqueness: { case_sensitive: false }
scope :chemists, -> { where(chemist: true) }
scope :operators, -> { where(operator: true) }
scope :inspectors, -> { where(inspector: true) }
enum role_level: [ :user, :admin ]
def self.names
pluck(:full_name)
end
end
用户个人资料无法登录应用。管理员个人资料仍然可以登录应用。
Tenant.rb
class Tenant
PROPERTIES = {
'pi' => { name: "PI",
time_zone: "Central Time (US & Canada)",
area_divisor: 144.0,
small_area_cutoff: 2304,
yield_multiplier: 1 },
'pe' => { name: "PE",
time_zone: "Beijing",
area_divisor: 1000000.0,
small_area_cutoff: 1500000.0,
yield_multiplier: 10.76 }
}
attr_reader :code, :name, :time_zone, :area_divisor, :small_area_cutoff, :yield_multiplier
def initialize(code)
@code = code
@name = PROPERTIES[code][:name]
@time_zone = PROPERTIES[code][:time_zone]
@area_divisor = PROPERTIES[code][:area_divisor]
@small_area_cutoff = PROPERTIES[code][:small_area_cutoff]
@yield_multiplier = PROPERTIES[code][:yield_multiplier]
end
def self.asset_classes
[User, FilmMovement, SalesOrder, MasterFilm, Film, Machine]
end
asset_classes.each do |klass|
name = klass.name.pluralize.underscore.downcase.to_sym
define_method(name) do
klass.tenant(code)
end
end
asset_classes.each do |klass|
name = "new_#{klass.name.underscore.downcase}".to_sym
define_method(name) do |*args|
klass.new(*args).tap do |o|
o.tenant_code = code
end
end
end
end
编辑:添加tenant.rb 我还在学习Ruby on Rails。我刚刚接手了这个应用程序,用户配置文件的问题发生了,用户无法登录。
答案 0 :(得分:1)
您在代码中使用了multenancy。因此,如果管理员租户在登录后设置正确,并且在简单使用的情况下,租户设置不正确。
查看您正在设置当前范围的租户模块。