【问题标题】:Rails Association Extensions: Override a HABTM assignment (collection=) methodRails 关联扩展:覆盖 HABTM 分配 (collection=) 方法
【发布时间】:2011-11-15 20:25:36
【问题描述】:

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']

【问题讨论】:

  • 您能再解释一下吗?我真的不知道你想做什么
  • 这个想法是建立一个集合关系,我可以为其分配一个对象数组 ([obj1, obj2, ...]) 和一个对象键数组 ([key1, key2, ...])。

标签: ruby-on-rails ruby activerecord overriding


【解决方案1】:

我认为可能是这样的:

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

我不确定你是否可以这样使用运算符

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-14
    • 2016-11-07
    相关资源
    最近更新 更多