从ApplicationRecord中的类方法调用方法

时间:2016-06-11 21:45:58

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

我有一个奇怪的问题 我有以下实现: 在控制器中 Event.search(search_params)

class Event < ApplicationRecord
  def self.search(params)
    find_events(params)
  end
  private

  def find_events(params)
    events = Event.upcoming
    events = events.where("name like ?", "%#{params['name']}%")
    events
  end 
end

执行时我收到此错误:

NoMethodError (undefined method `find_events' for #<Class:0x007fadcd00a690>)

我的代码出了什么问题?

1 个答案:

答案 0 :(得分:1)

您必须使用

声明类方法
<div class="posts-wrapper">

  <div class="post-container">

    <h1>Example Post</h1>
    <p>Aliquip hic nescius, anim te officia quo dolore, illum appellat ne admodum, an se comprehenderit. Mandaremus nisi consequat, nostrud voluptatibus et incididunt. Aut aute mentitum, tempor eu mandaremus non labore vidisse se concursionibus aut possumus
      quorum fugiat te aliqua, ita quid appellat laboris ab summis ullamco e firmissimum, aliqua quamquam ea quorum duis, aut commodo sempiternum. Litteris varias excepteur ingeniis. Nisi iudicem qui dolore aute. Dolore ne ita labore proident, ab labore
      occaecat deserunt. Incididunt amet offendit.
    </p>

    <p><b>Sub Heading</b>
    </p>

    <p>Amet ex arbitror ab quorum, sint appellat qui esse legam quo probant legam ullamco, an ipsum ullamco coniunctione est litteris familiaritatem hic eiusmod, eram hic quibusdam iis multos sed occaecat duis magna hic enim ne ut fore aut aliqua. Pariatur
      dolore mentitum admodum ea pariatur non labore, hic ipsum voluptate commodo nam se et malis fore enim, nam enim aute hic mandaremus, si qui malis iudicem, anim relinqueret vidisse quis nescius, officia amet admodum mandaremus. Incurreret elit consequat
      mentitum ita o quorum sunt eram nostrud an e summis sempiternum ad aut culpa praetermissum, doctrina nisi expetendis si doctrina et duis o probant quid voluptate, elit est admodum qui legam. Non dolor iudicem ingeniis si laboris quid aliquip incurreret.
      Officia an enim incididunt, singulis elit cernantur. Aut quamquam in eiusmod. Id non irure esse duis quo non dolore enim minim senserit, est incididunt si eiusmod, quem te laborum ex lorem. Ex illum transferrem qui esse quibusdam coniunctione. Nisi
      a aliquip est in voluptate et cupidatat. Offendit ab ipsum, anim incididunt non officia aut se malis voluptate in eram quibusdam eu legam quae iis iis probant ne officia, irure excepteur est philosophari, eram cupidatat a lorem lorem ab et eram
      litteris. Tamen appellat do nisi amet ex aut quo veniam ipsum malis eu dolore voluptatibus proident nisi commodo, fabulas dolor tempor. Possumus nulla iis quamquam despicationes, doctrina do incididunt an quamquam an quamquam, et te sint possumus.
      Illum expetendis praesentibus e iis minim elit sunt cernantur. Tamen nescius quo consectetur ea doctrina id noster, te quorum proident, aut quorum coniunctione, hic quid probant firmissimum ex te consequat in arbitror, varias aut officia in ipsum,
      excepteur cillum minim voluptate sunt. Et eu veniam cernantur, expetendis est fore, hic ad dolore velit minim sed ab o quem admodum, o quae quae ex incididunt iis aliquip summis o eiusmod concursionibus sed e culpa exquisitaque, eram si cupidatat
      ut fugiat. Quo cillum ullamco laborum. Officia elit deserunt nam enim comprehenderit litteris aliqua quibusdam, anim mandaremus eu eiusmod ita de summis fore do singulis, cillum si non dolore ullamco de te amet occaecat aut e ab firmissimum, nulla
      instituendarum nostrud aute mentitum. Quem senserit do exquisitaque, ne magna mentitum. Ad aute adipisicing. Nam mandaremus adipisicing do doctrina sed quamquam, ut in exquisitaque, velit aut deserunt ubi irure.</p>
  </div>

  <div class="post-container">

    <h1>Example Post</h1>
    <p>Aliquip hic nescius, anim te officia quo dolore, illum appellat ne admodum, an se comprehenderit. Mandaremus nisi consequat, nostrud voluptatibus et incididunt. Aut aute mentitum, tempor eu mandaremus non labore vidisse se concursionibus aut possumus
      quorum fugiat te aliqua, ita quid appellat laboris ab summis ullamco e firmissimum, aliqua quamquam ea quorum duis, aut commodo sempiternum. Litteris varias excepteur ingeniis. Nisi iudicem qui dolore aute. Dolore ne ita labore proident, ab labore
      occaecat deserunt. Incididunt amet offendit.
    </p>

    <p><b>Sub Heading</b>
    </p>

    <p>Amet ex arbitror ab quorum, sint appellat qui esse legam quo probant legam ullamco, an ipsum ullamco coniunctione est litteris familiaritatem hic eiusmod, eram hic quibusdam iis multos sed occaecat duis magna hic enim ne ut fore aut aliqua. Pariatur
      dolore mentitum admodum ea pariatur non labore, hic ipsum voluptate commodo nam se et malis fore enim, nam enim aute hic mandaremus, si qui malis iudicem, anim relinqueret vidisse quis nescius, officia amet admodum mandaremus. Incurreret elit consequat
      mentitum ita o quorum sunt eram nostrud an e summis sempiternum ad aut culpa praetermissum, doctrina nisi expetendis si doctrina et duis o probant quid voluptate, elit est admodum qui legam. Non dolor iudicem ingeniis si laboris quid aliquip incurreret.
      Officia an enim incididunt, singulis elit cernantur. Aut quamquam in eiusmod. Id non irure esse duis quo non dolore enim minim senserit, est incididunt si eiusmod, quem te laborum ex lorem. Ex illum transferrem qui esse quibusdam coniunctione. Nisi
      a aliquip est in voluptate et cupidatat. Offendit ab ipsum, anim incididunt non officia aut se malis voluptate in eram quibusdam eu legam quae iis iis probant ne officia, irure excepteur est philosophari, eram cupidatat a lorem lorem ab et eram
      litteris. Tamen appellat do nisi amet ex aut quo veniam ipsum malis eu dolore voluptatibus proident nisi commodo, fabulas dolor tempor. Possumus nulla iis quamquam despicationes, doctrina do incididunt an quamquam an quamquam, et te sint possumus.
      Illum expetendis praesentibus e iis minim elit sunt cernantur. Tamen nescius quo consectetur ea doctrina id noster, te quorum proident, aut quorum coniunctione, hic quid probant firmissimum ex te consequat in arbitror, varias aut officia in ipsum,
      excepteur cillum minim voluptate sunt. Et eu veniam cernantur, expetendis est fore, hic ad dolore velit minim sed ab o quem admodum, o quae quae ex incididunt iis aliquip summis o eiusmod concursionibus sed e culpa exquisitaque, eram si cupidatat
      ut fugiat. Quo cillum ullamco laborum. Officia elit deserunt nam enim comprehenderit litteris aliqua quibusdam, anim mandaremus eu eiusmod ita de summis fore do singulis, cillum si non dolore ullamco de te amet occaecat aut e ab firmissimum, nulla
      instituendarum nostrud aute mentitum. Quem senserit do exquisitaque, ne magna mentitum. Ad aute adipisicing. Nam mandaremus adipisicing do doctrina sed quamquam, ut in exquisitaque, velit aut deserunt ubi irure.</p>
  </div>

</div>

<div id="sidebar-container">
  <h1>About Me</h1>
  <img src="placeholder.png">

  <p>Fore si est enim vidisse ea sed ab quorum fore anim, magna officia qui incididunt, ullamco varias legam proident enim. Est ex exquisitaque. Est aliqua officia de offendit consectetur a commodo. Ut e cillum sint eram in laboris varias velit eu eram.
    Duis quamquam fidelissimae. Esse appellat qui singulis id quid officia est coniunctione. Laborum familiaritatem sed expetendis, hic sed aliqua enim esse, noster probant se eiusmod, cillum vidisse pariatur. Ipsum fidelissimae deserunt multos pariatur.
    Senserit firmissimum si cernantur, sed si culpa arbitror. Mentitum dolore ullamco, anim de possumus, incididunt fugiat nescius pariatur est aliqua expetendis nam incurreret. Ullamco fore ea commodo illustriora non te ea relinqueret. Culpa philosophari
    admodum anim commodo. Mandaremus dolor id eiusmod praetermissum, quis sed arbitror non aliqua ut ab ut sempiternum nam do cillum relinqueret se esse ex o summis quamquam, ex lorem tempor familiaritatem ad de minim officia laborum ne noster consectetur
    admodum culpa admodum. Sunt vidisse o admodum a elit doctrina non amet nisi.</p>
</div>

如果没有附加到该方法的实例对象,则无法从类方法中调用实例方法。