如何确定一个模型的属性值是否存在于另一个模型的属性值中?
我正在开发一个应用程序,我希望看看用户的名字是否已显示在报告中。但是,我不知道从哪里开始解决这个问题。我已经在我的应用程序中使用ransack作为搜索功能用于其他目的。我可以使用Ransack来做这件事吗?
我想我需要在我的用户控制器中创建某种方法或帮助器。我的最终目标是根据结果设置某些css类(即查看的复选标记或未见的' x
也许在我的用户控制器中,我会做这样的事情......但是我不认为现在看待它时,was_seen属性是必要的。
def was_seen?
@user.was_seen = true if Report.search(@user.name)
end
模型示例(摘录)
User Model
:name, String
:was_seen, Boolean
Report Model
:body, Text
最终目标是做这样的事情。
<% if user.was_seen %>
<li class="seen"><%= user.name %></li>
<% else %>
<li><%= user.name %></li>
<% end %>
可能的解决方案
def was_seen?
@q = Report.search(body_cont: self.name).result
return @q.empty? ? false : true
end
答案 0 :(得分:1)
您可以尝试这样的事情:
User.rb
def was_seen?
Report.all.select { |r| r.body.include? self.name }.length > 0 ? true : false
end
然后,不要忘记ERB中的完整方法名称:
<% if user.was_seen? %>
<li class="seen"><%= user.name %></li>
<% else %>
<li><%= user.name %></li>
<% end %>
此方法可能很慢,具体取决于您拥有的报告和用户的数量,因为您必须在数据库中加载所有报告,然后搜索每个文本字段,并为每个用户重复这两个步骤。我没有Jedi技能来加快查询速度,但这应该让你现在继续前进。
答案 1 :(得分:0)