[英]How to create users with different dashboard layouts and privileges using RailsAdmin in Ruby on Rails
[英]Create different users in Ruby with iteration
我是Ruby的新手。 我想使用迭代在ruby中創建不同的用戶。
def createuser(*args)
obj = H['userClass']
obj.login = H['login']
obj.password = a.password = @default_passwd
obj.email = 'test@example.com'
obj.role = MasterUser::ROLE_MASTER_USER
end
例如,我想調用此方法並發送以下參數:
H = Hash["userClass" => MasterUser.new, "login" => admin]
createuser(H)
實現此目的的正確方法是什么?
這是修改后的版本。 它應該使您更接近目標,同時仍然可以被識別:
def create_user(parameters)
klass = parameters['user_class']
user = klass.new
user.login = parameters['login']
user.password = @default_passwd
user.email = 'test@example.com'
user.role = klass::ROLE_MASTER_USER
user
end
user_params = {"user_class" => MasterUser, "login" => 'admin'}
new_user = create_user(user_params)
我可能會做這樣的事情:
class UserFactory
attr_accessor :user
def initialize(klass)
@user = klass.new
end
def create(params = {})
user.login = params.fetch :login
user.password = params.fetch :password, 'default_password'
user.email = params.fetch :email
# user.role should just be initialised on the klass.new call, no need to do that here
# etc...
end
end
class MasterUser
ROLE = 'master_role'
attr_accessor :login, :password, :email, :role
def initialize
self.role = ROLE
end
end
您會這樣稱呼:
UserFactory.new(MasterUser).create(login: 'george', password: 'secret', email: 'me@george.com')
我使用params.fetch :login
而不是僅僅閱讀它的原因是,在Ruby中,通過沒有哈希的鍵訪問哈希返回nil
,而嘗試fetch
它會拋出錯誤。 例如:
a = {}
a[:foo] #=> nil
a.fetch :foo #=> throw a KeyError
因此,這是一種強制參數哈希具有正確鍵的方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.