问题描述
我有一个带有两个表的Rails应用程序。一种是具有电子邮件和密码的用户(设计模型)。另一个是属于用户的产品。
当用户使用该应用程序登录时(包括他的电子邮件和密码),我希望我的产品控制器进行过滤,以便已登录的用户只能看到共享了当前已登录精确域的其他用户注册的产品用户(当前用户)中。
例如:
-
登录为:test@gmail.com
-
可见的产品:
- 注册人:test2@gmail.com
- 注册人:test3@gmail.com
-
产品不可见:
- 注册人:test4@yahoo.com
- 注册人:test5@yahoo.com
有可能吗?我知道.where方法,但是我在语法上苦苦挣扎。
解决方法
那这样的事情呢?
email_domain = current_user.email.split("@").last
@products = Products.joins(:users).where("users.email like ?","%#{email_domain}")
第一行获取电子邮件域。
第二行在user.email
和部分email_domain
之间进行检查。这里的关键字符是%
,用作通配符。