如何为不同行的列分配不同的值

发布于 2024-11-05 14:27:49 字数 270 浏览 0 评论 0原文

例如,有一个如下表:
Column_A Column_B Column_C

  1. 我想使用 ruby​​ 迁移添加列 D
  2. 我有一个函数 getColumnDValue(columnC)。这个函数可以根据C列的值获取D列的值
  3. 我想根据C列的值给D列赋予不同的值。

这些怎么办???

我检查了 Update_All 和 Update。然而,它们似乎对我的情况没有用。 或者至少,我不知道如何使用这些方法来达到我的目的。

For example, there is a table like following:
Column_A Column_B Column_C

  1. I want to add a column D using ruby migration
  2. I have a function getColumnDValue(columnC). This function can get the value of column D based on the column C value
  3. I want to assign different values to column D based on the column C value.

How to do these????

I've checked the Update_All and Update. However, it seems they are not useful for my case.
Or at least, I don't know how to use these methods to achieve my purpose.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

公布 2024-11-12 14:27:49

如果我理解正确的话,您希望能够以通常的方式设置 d 的值,如下所示:myobject.d = 5。根据c中的值,d将被保存为正确的值。

这可以通过 before_save 过滤器来完成,您可以在其中为 d 设置新值。

您还可以覆盖 d 的 setter 方法:

def d=(value)
  write_attribute(:d, getColumnDValue(value))
end

使用第一种方法(过滤器),您的对象将携带“无效”值,直到保存为止。如果覆盖 setter,新值将立即写入对象。由您决定哪种方法最适合您。

If I understand you correctly, you want to be able to set the value of d the usual way, like so: myobject.d = 5. Based on the value in c, d will be saved with the correct value.

This could be accomplished with a before_save filter, where you set a new value for d.

You could also overwrite the setter method for d:

def d=(value)
  write_attribute(:d, getColumnDValue(value))
end

With the first method, the filter, your object will carry the "invalid" value until saved. If you overwrite the setter, the new value will be written to the object immediately. It's up to you to decide which method fits you best.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文