我有一个充满故事的数据库,每个故事都属于一个用户。
我已经有了每个故事的用户ID属性。
我最近还为我的所有故事添加了用户名属性。
现在所有这些用户名属性都为零。
在控制台里,我可以
Story.first.user_name = Story.first.user.name
将user_name属性设置为第一个故事的user.name值。
我如何在PostgreSQL数据库中迭代我的所有故事并动态更新每个故事的用户名值?
我想使用一些类似ActiveRecord的update-all方法,但是使用一个动态参数。
我在Rails控制台中尝试过:
Story.update_all('user_name = Story.user.name')
但结果是:
SQL (36.2ms) UPDATE "stories" SET user_name = Story.user.name
ActiveRecord::StatementInvalid: PG::UndefinedTable: ERROR: missing FROM-clause entry for table "user"
LINE 1: UPDATE "stories" SET user_name = Story.user.name
^
: UPDATE "stories" SET user_name = Story.user.name
from (irb):14
不知道如何在原始SQL中使用FROM,或者如何在ActiveRecord中写入正确的命令。