如何在没有控制器调用的情况下在项目内的任何地方调用模型方法?

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 线程?

在没有 new 的情况下在 C++ 中调用构造函数

如何在没有 ajax 调用的情况下在 window.location 中传递一个数组

如何在没有外部库的情况下在 React 中播放/暂停视频?

在没有任何用户控制或交互的情况下在 iPhone 上播放全屏视频?

如何在没有声明的情况下在api之间保存令牌?