这是针对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?
对不起,我刚学铁路。
感谢。
答案 0 :(得分:0)
使用观察者(http://api.rubyonrails.org/classes/ActiveRecord/Observer.html)在A模型上运行代码after_create。然后找到新值并将它们添加到B模型中。