如何使用 "id" 作为 table 的主键来覆盖 Rails'?
How to override Rails' using "id" as a table's primary key?
Rails 5.2.1
我有一个 Postfix 邮件服务器,是根据 flurdy.com 上的指南设置的。它在后端使用 MySQL 来跟踪虚拟域、用户并将别名映射到用户帐户。我正在尝试在它使用的 MySQL table 上放置一个漂亮的 Rails 前端。
Flurdy's method 使用名为“id”的字段来存储用户的电子邮件地址。当然,我的问题是 Rails 喜欢使用“id”作为 table 的主键。我找到了使用不同主键的指南,但即使在我的用户 table 上执行 db:migrate
并在模型中指定它应该使用 'pkid' 作为主键,而不是给出我的电子邮件地址列表,我得到 pkid 的值。 MySQL.
中的电子邮件地址是正确的
这是用户 table 迁移的相关片段:
class CreateUsers < ActiveRecord::Migration[5.2]
def change
create_table :users, id: false do |t|
t.primary_key :pkid
t.string :id
t.string :name
. . . skip . . .
t.timestamps
end
end
end
这是用户模型:
class User < ApplicationRecord
self.primary_key = 'pkid'
end
预期的行为是在我调用用户时看到类似这样的内容#index:
pkid id name
1 this@example.com This User
2 that@example.com That User
3 theother@example.com Someone Else
而我看到的是:
pkid id name
1 1 This User
2 2 That User
3 3 Someone Else
感谢您的帮助。
编辑:我在 Flurdy 的指南上方设置了 link 以设置 Postfix 以在 GNU/Linux 上为虚拟域提供服务。它使用 MySQL 来存储用户、域和别名信息,有时会替换 /etc/postfix 目录中的散列 tables,为这个问题添加一些上下文。
我假设 id 属性现在是 pkid 属性的别名。
要查看 id 列的值,您可以使用属性散列:
User.first.attributes["id"]
Rails 5.2.1
我有一个 Postfix 邮件服务器,是根据 flurdy.com 上的指南设置的。它在后端使用 MySQL 来跟踪虚拟域、用户并将别名映射到用户帐户。我正在尝试在它使用的 MySQL table 上放置一个漂亮的 Rails 前端。
Flurdy's method 使用名为“id”的字段来存储用户的电子邮件地址。当然,我的问题是 Rails 喜欢使用“id”作为 table 的主键。我找到了使用不同主键的指南,但即使在我的用户 table 上执行 db:migrate
并在模型中指定它应该使用 'pkid' 作为主键,而不是给出我的电子邮件地址列表,我得到 pkid 的值。 MySQL.
这是用户 table 迁移的相关片段:
class CreateUsers < ActiveRecord::Migration[5.2]
def change
create_table :users, id: false do |t|
t.primary_key :pkid
t.string :id
t.string :name
. . . skip . . .
t.timestamps
end
end
end
这是用户模型:
class User < ApplicationRecord
self.primary_key = 'pkid'
end
预期的行为是在我调用用户时看到类似这样的内容#index:
pkid id name
1 this@example.com This User
2 that@example.com That User
3 theother@example.com Someone Else
而我看到的是:
pkid id name
1 1 This User
2 2 That User
3 3 Someone Else
感谢您的帮助。
编辑:我在 Flurdy 的指南上方设置了 link 以设置 Postfix 以在 GNU/Linux 上为虚拟域提供服务。它使用 MySQL 来存储用户、域和别名信息,有时会替换 /etc/postfix 目录中的散列 tables,为这个问题添加一些上下文。
我假设 id 属性现在是 pkid 属性的别名。
要查看 id 列的值,您可以使用属性散列:
User.first.attributes["id"]