【问题标题】:Add Model A's multiple columns to Model B's one column upon create, update在创建、更新时将模型 A 的多列添加到模型 B 的一列
【发布时间】:2010-11-03 06:31:33
【问题描述】:

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

模型 A: - 有列:名称、城市

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

假设我们有:

B1 - 美利坚合众国 (:country) 并具有 A1 和 A2 A1 - 沃尔玛 (:name), 纽约 (:city) A2 - 星巴克 (:name), 旧金山 (:city)

每当用户创建/更新列表 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 中?

对不起,我只是在学习 Rails。

谢谢。

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-14
      • 2016-01-31
      • 2020-11-19
      • 1970-01-01
      • 1970-01-01
      • 2017-03-23
      相关资源
      最近更新 更多