0

例如,我有这个数组:

   tags_array=['<code>','<span>','<div>', '<label>','<a>', '<br>', '<p>' '<b>','<i>', '<del>', '<strike>', '<u>', '<img>', '<video>', '<audio>', '<iframe>', '<object>', '<embed>', '<param>', '<blockquote>', '<mark>', '<cite>', '<small>', '<ul>', '<ol>', '<li>', '<hr>', '<dl>', '<dt>', '<dd>', '<sup>', '<sub>', '<big>', '<pre>', '<code>', '<figure>', '<figcaption>', '<strong>', '<em>', '<table>', '<tr>', '<td>', '<th>', '<tbody>', '<thead>', '<tfoot>', '<h1>', '<h2>', '<h3>', '<h4>', '<h5>','<h6>']

我不想在我使用它的每个模型方法中定义它,它似乎不是很聪明的复制粘贴。

当然,我不想要单独的数据库行。

我怎样才能定义一次,所以它对每个模型方法都是可见的,比如实例initialize方法。

喜欢

class MyModel<ActiveRecord::Base

#...
@tags_array=['','',...]

def onemethod
@tags_array.split!
#...
end

def twomethod
@tags_array.capitalize!
#...
end
end
4

1 回答 1

1

您可以将其定义为一个模块并将其混合。

module TagsArray

  tags_array=['','',...]

  def self.onemethod
  tags_array.split
  #...
  end

  def self.twomethod
  tags_array.capitalize
  #...
  end

end

然后,您可以将其混入您的模型中。

class MyModel<ActiveRecord::Base
  include TagsArray
end

希望这可以帮助。

你也可以放弃!从 split 和大写的末尾开始,除非您想在每次调用该方法时永久更改 tags_array。

于 2013-07-29T23:46:44.717 回答