【问题标题】: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| ?在什么上应用块?在什么上调用类方法,助手?
  • 除非我遗漏了一些你们很多人想要获取未完成任务的用户的东西?

标签: ruby-on-rails ruby-on-rails-4 ruby-on-rails-3.2 ruby-on-rails-5


【解决方案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模型的角色可以处理它,根据她的情况,不需要类方法。
猜你喜欢
  • 2019-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多