首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将模型传递给rails中的方法

将模型传递给rails中的方法
EN

Stack Overflow用户
提问于 2016-04-29 19:03:14
回答 1查看 40关注 0票数 0

在重构中,我需要将一个generate_token方法从我的用户模型中移出,以便其他模型能够调用它。

这是方法代码:

代码语言:javascript
复制
def generate_token(column)
  begin
    self[column] = SecureRandom.urlsafe_base64
  end while User.exists?(column => self[column])
end

在传递列时,允许用户模型根据需要生成许多不同的令牌。该方法名为:

代码语言:javascript
复制
def some_other_method
  generate_token(:token_column_name)
  ...
end

我的用户模型目前将两个不同的令牌列传递给该方法:auth_tokenpw_reset_token

我的第一个想法是把它放到/lib/generate_token.rb中,然后用include generate_token从模型中调用它。我不应该在include上传递列param,因为它只是包含方法,而不是调用它。

对我来说,挑战是end while User.exists?(column => self[column])。这将防止方法在已经存在的情况下生成新令牌。但是,这是假设用户模型;相反,我需要重构它以接受调用方法的模型,并将其作为变量传递给方法,如下所示:

include generate_token(model_name)

这样代码现在就可以读取

end while [Model].exists?(column => self[column])

这个是可能的吗?我该怎么做?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-29 19:14:01

当然,库类是这里的方法,更确切地说,是Rails 关注点 (在这个上下文中也有相同的差异)。

也就是说,您可以调用self.class来获取类,然后执行类似于self.class.exists?的操作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36945721

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档