如何在没有控制器调用的情况下在项目内的任何地方调用模型方法?
Posted
技术标签:
【中文标题】如何在没有控制器调用的情况下在项目内的任何地方调用模型方法?【英文标题】:How to call model method anywhere inside project without controller call? 【发布时间】:2019-05-13 07:02:47 【问题描述】:我在方法名称中的模型任务是 not_completed_list 有一些记录存储在@list 变量中。我需要在没有控制器的情况下从视图中循环该变量 (@list) 怎么样?
任务.rb
class Task < ApplicationRecord
def self.not_completed_list
@list= Person.pluck(:completed_on)#[name1,name2,name3]
end
end
我的看法
not_completed_list.@list do |x|
puts x#1sttime looping name1,2nd time..name2,3rd time name3
end
【问题讨论】:
什么是not_completed_list
?是Task
的实例吗?
Task.not_completed_list.each do |x| ...
not_completed_list.@list do |x|
?在什么上应用块?在什么上调用类方法,助手?
除非我遗漏了一些你们很多人想要获取未完成任务的用户的东西?
【参考方案1】:
只需在视图中执行以下操作,
<% Task.not_completed_list.each do |completed_on| %>
模型应该是,
class Task < ApplicationRecord
def self.not_completed_list
Person.pluck(:completed_on)
end
end
但您的实施和流程需要进行大量更改。
你可以在不创建任何类方法的情况下简单地获得它,
<% Person.pluck(:completed_on).each do |completed_on| %>
【讨论】:
在这种情况下,Task.not_completed_on
在功能上不是Person.pluck(:completed_on)
的别名吗?
@jvillian 我更新了,实际上没有Task
模型的角色可以处理它,根据她的情况,不需要类方法。以上是关于如何在没有控制器调用的情况下在项目内的任何地方调用模型方法?的主要内容,如果未能解决你的问题,请参考以下文章
如何在没有窗体或控件的情况下在 Winform 应用程序中调用 UI 线程?
如何在没有 ajax 调用的情况下在 window.location 中传递一个数组