Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 使用Rails中另一列的数据更新列中的所有行_Ruby On Rails_Activerecord_Migration_Ruby On Rails 5 - Fatal编程技术网

Ruby on rails 使用Rails中另一列的数据更新列中的所有行

Ruby on rails 使用Rails中另一列的数据更新列中的所有行,ruby-on-rails,activerecord,migration,ruby-on-rails-5,Ruby On Rails,Activerecord,Migration,Ruby On Rails 5,我有一个Content模型,其中每个内容都有一个源。目前,Content模型有一个link列作为URL,还有一个link\u text列作为源的名称,即用户必须手动输入源的名称和URL。我想改变这一点,以便能够自动输入一个名称,一旦提供了一个URL。以下是我所做的: 我制作了一个源代码模型。源模型包含用于内容的每个源的所有名称和域。这与以下内容有关:源代码有许多内容,而内容属于源代码 因此,我需要将link\u text列替换为source\u id列。然后我需要使用contents表中的链接列

我有一个
Content
模型,其中每个内容都有一个源。目前,
Content
模型有一个
link
列作为URL,还有一个
link\u text
列作为源的名称,即用户必须手动输入源的名称和URL。我想改变这一点,以便能够自动输入一个名称,一旦提供了一个URL。以下是我所做的:

我制作了一个
源代码
模型。源模型包含用于内容的每个源的所有
名称
。这与以下内容有关:
源代码
有许多
内容
,而
内容
属于
源代码

因此,我需要将
link\u text
列替换为
source\u id
列。然后我需要使用contents表中的
链接
列来设置
源id
列的值

i、 e.我将把
链接
列(在目录表中)中的URL与
列(在源表中)中的URL进行比较,并相应地为
内容
的每一行设置
源id

我该怎么做呢?

另一个要考虑的事情是,我想在迁移中设置<代码> SooSuxIDI/Cuff>,这样我也可以对我的生产应用程序中的现有数据进行更改。


我创建了一个迁移,将
源id
列添加到我的内容表中,并创建了另一个迁移,为所有现有记录设置该列中的所有数据-这是我不确定的第二个迁移。

哪些列标识链接?即
content.link==source.domain
?不,链接和域不相等<代码>内容。链接
类似于
https://www.example.com/some/page
source.domain
类似于
https://www.example.com
不太好。然后,您必须使用ruby代码编写迁移,并降低迁移周期,而不是1次SQL更新。在这种情况下,有没有更好的方法来处理这个@pavel?i、 e.我也可以轻松地对生产数据库进行更改的一种方法?您必须像
Source.link
那样设计表。link
Content.link
相同。然后,您可以将
源代码id
添加到内容中,用所有链接填充
源代码
表,通过
链接
更新内容(设置
源代码id
),然后在
内容上添加外键、索引和
非空
约束。源代码id
列。