在创建,更新时,将模型A的多个列添加到模型B的一列中

时间:2010-11-03 06:31:33

标签: ruby-on-rails

这是针对Rails的问题。由于我的思维斯芬克斯不知何故无法索引关联模型A,我正在寻找一个临时解决方案。

模特A: -has列:名称,城市

模特B: -has_many模型A的 -has列:国家 - 我想在Model B中添加一个名为“tag”的列

假设我们有:

B1 - 美利坚合众国(:国家),有A1和A2 A1 - 沃尔玛(:名称),纽约(:城市) A2 - 星巴克(:名称),旧金山(:城市)

每当用户创建/更新列表B1时,A.name和A.city: - 每个A映射,添加到B.tag,join(',') - 然后保存

所以在上面的例子中,B1.tag将具有: 沃尔玛,纽约,星巴克,旧金山

那么我可以把它放在模型B中:

class B < ActiveRecord::Base
  has_many :as      # plural for A's

# ThinkingSphinx Index
  define_index do
    indexes :country
    indexes :tag
  end

end

我还没有在我的B中添加Tag列。

如何在B控制器中编写它,以便每次创建/保存时,它会自动映射每个A,然后将A.name和A.city连接(',')到B.tag?

对不起,我刚学铁路。

感谢。

1 个答案:

答案 0 :(得分:0)

使用观察者(http://api.rubyonrails.org/classes/ActiveRecord/Observer.html)在A模型上运行代码after_create。然后找到新值并将它们添加到B模型中。