相关疑难解决方法(0)

使用Rails,如何将主键设置为不是整数类型的列?

我正在使用Rails迁移来管理数据库模式,我正在创建一个简单的表,我希望使用非整数值作为主键(特别是字符串).为了从我的问题中抽象出来,让我们说有一个表格employees,其中员工用字母数字字符串标识,例如"134SNW".

我试过在这样的迁移中创建表:

create_table :employees, {:primary_key => :emp_id} do |t|
    t.string :emp_id
    t.string :first_name
    t.string :last_name
end
Run Code Online (Sandbox Code Playgroud)

这给了我什么似乎完全忽略了这条线t.string :emp_id并继续前进并使它成为一个整数列.有没有其他方法让rails为我生成PRIMARY_KEY约束(我正在使用PostgreSQL),而不必在execute调用中编写SQL ?

注意:我知道最好不要使用字符串列作为主键,所以请不要回答只是说添加一个整数主键.无论如何我可以添加一个,但这个问题仍然有效.

database migration ruby-on-rails primary-key

85
推荐指数
7
解决办法
8万
查看次数

如何在轨道中使ID成为随机的8位数字母数字?

这是我在模型中使用的东西

这是通过API发布到另一个第三方网站的URL

发布模型(post.rb)

"#{content.truncate(200)}...more http://domain.com/post/#{id.to_s}"
Run Code Online (Sandbox Code Playgroud)

"id"指的是帖子ID.如何将其转换为随机的8位字母数字?

现在,它被显示为人们可以改变的东西 http://domain.com/post/902

我想要 http://domain.com/post/9sd98asj

我知道我可能需要使用类似SecureRandom.urlsafe_base64(8)但在哪里以及如何设置它?

这就是我在routes.rb中所拥有的

match '/post/:id', :to => 'posts#show', via: :get, as: :post
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails ruby-on-rails-3

2
推荐指数
1
解决办法
2208
查看次数