Rails find_by_email多个表

时间:2012-11-05 13:49:34

标签: ruby-on-rails activemodel

我正在开发rails应用程序,我有3种不同的用户类型。这些用户可能非常不同,所以我为每个用户创建了模型。现在,他们应该能够通过单一表单登录。所以基本上我想说'find_by_email(“some_email”)',但搜索所有三个表。但是,似乎Rails希望您使用特定模型调用'find_by',例如Admin.find_by()。有什么建议?

2 个答案:

答案 0 :(得分:1)

尝试这样的事情并假设电子邮件在所有表格中都是唯一的

[Model1, Model2, Model3].each do |model|
  break if model.find_by_email("email@email.com").present?
end 

答案 1 :(得分:0)

希望这是您开发的早期阶段,但目前的结构可能不是最好的路线。每种用户类型不共享多少个不同的列?您可能希望使用“用户角色”系统,并将其简化为用户表上的额外列。

然而,您可以使用类似CanCan的内容来管理这些角色以及他们可以访问的内容/位置。