在重构中,我需要将generate_token
方法移出我的用户模型,以便可以由其他模型调用。将模型传递给rails中的方法
这是该方法的代码:
def generate_token(column)
begin
self[column] = SecureRandom.urlsafe_base64
end while User.exists?(column => self[column])
end
当柱在允许根据需要在用户模型来生成许多不同的令牌传递。该方法被称为像:
def some_other_method
generate_token(:token_column_name)
...
end
我的用户模型目前通过两种不同的令牌列的方法:auth_token
和pw_reset_token
。
我的第一个想法是把它放在/lib/generate_token.rb
,并从include generate_token
模型中调用它。我不应该传入包含的列参数,因为它只是包含方法,而不是调用它。
我面临的挑战是end while User.exists?(column => self[column])
。这可以防止该方法在已经存在的情况下生成新的令牌。但是,这是假设用户模型;相反,我需要重构其采取与调用该方法,并通过在作为一个变量的方法,如模型:
include generate_token(model_name)
使代码现在可以读取
end while [Model].exists?(column => self[column])
这可能吗?我将如何做到这一点?
我马上去关注...谢谢。 – Matteo
这似乎是我在找的东西。我会尽快发布我的代码。 (或者,我将再次发布Stack ...:p) – Matteo
太好了,很高兴我能帮上忙。 – GoGoCarl