ruby-on-rails - 当前用户的Rails设置过滤器-加入关联问题
问题描述
我有一个用于表单的过滤器,我只想显示那些电子邮件与当前用户匹配的表单。
涉及的属性:用户的电子邮件、职业的收件人、地区名称
Careers belongs_to :region 我目前正在显示 Region,在我看来以下内容:
-@careers.each do |career|
th =career.region&.name
因此,逻辑是将 current_user.email 与所有 Careers.recipienct 进行比较,如果存在则仅显示那些代表的区域。
示例是:
Region | Career | Recipients
Pacific Northwest | Data Analyst | john@doe.com, jill@excite.com
所以我知道它需要点击我的区域选择,如下所示:
= select_tag :region_id,
options_from_collection_for_select(sort_region, :id, :name, params[:region_id]),
include_blank: 'All Regions'
sort_region 目前有:
def sort_region
Region.where.not(name: ['HQ', 'Canada'].sort_by(&:position)
end
所以我的想法是用类似的方法来处理比较:
def user_region
if current_user.super_admin?
return sort_region
else
arr = []
Career.all.each do |emails|
arr << emails.recipient
end
if arr.include?(current_user.email)
return BLANK
end
end
end
空白是我卡住的地方。我只想显示Career.recipient 与current_user.email 匹配的那些区域。
我为基本上我讨厌的回报写了以下内容
return Region.joins(:career).where("region.name = career.region&.name")
这实际上返回
无法将“区域”加入名为“职业”的关联
我尝试时同样的问题
return Region.joins(:career).where("careers.region_id = region.id")
我应该在这里使用正确的连接关联吗?
编辑:如果我能弄清楚如何通过电子邮件向数组推送第二个值,我想我可以解决退货问题。
所以像:
arr = []
Career.all.each do |emails|
arr << emails.recipient
arr << emails.region_id
end
if arr.include?(current_user.email)
return region_id
end
所以这不会像我希望/想要的那样创建一对 [["john@doe.com", 2], ["jane@excite.com", 3]] 而是 ["john@doe.com ", 2, "jane@excite.com", 3]。此外,我无法返回 region_id。所以我只需要访问整数。
也许我应该创建所有项目的哈希然后从那里拉?
另一个编辑:
尝试将条件放在迭代中。
arr = []
Career.all.each do |emails|
if emails.recipient == current_user.email
arr << emails.region_id
end
end
然而,这显示了包含 [1] 的 arr,它不是关联的 region_id。
第三次编辑:
我最近的尝试是查看加入,我只需拉出那些职业收件人等于 current_user.email 的区域。
Region.find(:all, joins: ' JOIN regions ON careers.region_id', conditions: "#{current_user.email} = careers.recipient")
这导致找不到您要查找的区域。
解决方案
赢得胜利的 Arel_table
Region.joins(:careers).where(Career.arel_table[:recipient].matches("%#{current_user.email}%"))
推荐阅读
- decompiler - 是否可以从 .unityweb 文件中获取 dll?
- scala - Akka 和阻塞并行处理
- java - 如何打印随机插入排序的数组内容以及随机数之前的单词?
- java - 如何访问以编程方式添加到自定义视图的视图?
- reactjs - 为什么获取 scrollIntoView 不是函数
- reactjs - 通用挂钩的更新值
- here-api - 使用 HERE 进行路线优化和交付窗口
- c++ - 构建良好,但在 Eclipse CDT C++ 项目中突出显示错误
- python - 为什么我会随机获得超高的困惑?
- c++ - 试图故意引发内存泄漏和堆栈溢出,但没有看到内存增长或程序减慢计算机速度