Ruby on rails 将在Rails环境中运行的代码包装到模块中

Ruby on rails 将在Rails环境中运行的代码包装到模块中,ruby-on-rails,ruby,module,Ruby On Rails,Ruby,Module,我有这个代码,它工作得很好 require "date" @past = [] @future = [] @artist = Artist.find(2) def sort_by_date(artist) artist.events.each do |event| if event.date < DateTime.now @past << even

我有这个代码,它工作得很好

    require "date"
        @past = []
        @future = []

    @artist = Artist.find(2)

    def sort_by_date(artist)
        artist.events.each do |event|
            if event.date < DateTime.now
                @past << event.id
            else
                @future << event.id
            end
        end
    end

    def event_title(arr)
        arr.each do |event_id|
            e = Event.find(event_id)
            artist_names = []

            e.artists.each do |artist|
                unless artist.name == @artist.name
                    artist_names << artist.name
                end
            end

            puts "#{e.name} with #{artist_names.join(", ")} at #{(Venue.find(e.venue_id)).name}"
        end
    end

  sort_by_date(@artist)
  puts "Upcoming Events: "
  event_title(@future)
  puts "Past Events: "
  event_title(@past)

看起来这里有几件事不对。您试图初始化一个模块,您只能初始化一个类,例如
类SortedArtListEvents

如果您有:

module Foo
  def bar; end
end
bar
只能通过使用
Foo
包含或扩展模块或类来访问。对于SortedArtListEvents:Module,如果出现错误
未定义方法sort\u by\u date',则必须执行以下操作

module SortedArtistsEvents
  def self.sort_by_date; end
end

要获得类似于排序的行为,请按日期排序。这里似乎有几件事情出错了。您试图初始化一个模块,您只能初始化一个类,例如
类SortedArtListEvents

如果您有:

module Foo
  def bar; end
end
bar
只能通过使用
Foo
包含或扩展模块或类来访问。对于SortedArtListEvents:Module,如果出现错误
未定义方法sort\u by\u date',则必须执行以下操作

module SortedArtistsEvents
  def self.sort_by_date; end
end

为了获得类似于
sortedArtDistSevents.sort\u by\u date

的行为,我创建了一个类来初始化我的模块,它在代码的末尾。当包含一个模块时,它的所有方法都必须有
self
才能使用它们吗?不,它们没有,谷歌可能会更快,请看这里ok so,在该方法中添加关键字
sort
,我得到了
未定义的方法“事件”
。这是另一个错误-
@artist
变量没有正确声明。我已经创建了一个类来初始化我的模块,它在代码的末尾。当包含一个模块时,它的所有方法都必须有
self
才能使用它们吗?不,它们没有,谷歌可能会更快,请看这里ok so,在该方法中添加关键字
sort
,我得到了
未定义的方法“事件”
。这是另一个错误-
@artist
变量未正确声明。您包括:ArtistEventSort,但模块名为:sortedardistevents。哦,伙计,好的,我已经解决了这个问题。但是仍然是相同的错误。您如何从Letsort类初始化模块?我刚刚将其包含在
Letsort
类中,该类只是一个虚拟类,用于测试我的模块的实际操作。此外,正如用户nikkypx所建议的,我将该方法更改为“self.sort\u by\u date”
,这导致了此错误
未定义的方法“events”
您包括:ArtistEventSort,但该模块名为:sortedardistevents.oh伙计,好的,我修复了此错误。但是仍然是相同的错误。您如何从Letsort类初始化模块?我刚刚将其包含在
Letsort
类中,该类只是一个虚拟类,用于测试我的模块的实际操作。此外,正如用户nikkypx所建议的,我将方法更改为
self.sort\u by\u date
,这导致了此错误
未定义的方法“事件”