Rails Association Extensions:覆盖HABTM赋值(collection =)方法

时间:2011-11-15 20:25:36

标签: ruby-on-rails ruby activerecord override

In a question I've previously answered,我使用关联扩展来覆盖HABTM集合的追加(<<)方法(另外,a similar question):

has_and_belongs_to_many(:countries) do
  def <<(country)
    if [*country].all? {|c| c.is_a?(String) }
      countries = Country.where(:code => country)
      concat(*countries)
    else
      concat(country)
    end
  end
end

这可能不受鼓励,但我的问题是,如果可能的话,如何覆盖赋值运算符,那么我可以countries = ['IL', 'US']得到相同的结果?

1 个答案:

答案 0 :(得分:0)

我认为它可能是这样的:

def =(countries)
  values = countries.kind_of?(Hash) ? countries.values : countries
  values.each do |country|
    self << country
  end
end

我不确定你是否可以使用运算符&lt;&lt;那样。