Sqlite关于Id'的问题;s
我有一个rails上的web应用程序,用户可以通过它提交存储在sqlite数据库中的数据。当提交页面显示时,它会显示DB的ID编号,这将是该提交的用户ID,以供以后参考。这是有意义的,因为它是一个唯一的数字 但是,我可以让这个数字从Sqlite关于Id'的问题;s,sql,ruby-on-rails,ruby,sqlite,Sql,Ruby On Rails,Ruby,Sqlite,我有一个rails上的web应用程序,用户可以通过它提交存储在sqlite数据库中的数据。当提交页面显示时,它会显示DB的ID编号,这将是该提交的用户ID,以供以后参考。这是有意义的,因为它是一个唯一的数字 但是,我可以让这个数字从10000开始,而不是从1开始 ========================================= def create @post = Post.new(post_params) @post.save redirect_to @post #th
10000
开始,而不是从1
开始
=========================================
def create
@post = Post.new(post_params)
@post.save
redirect_to @post #this is the line that it errors on
end
顺便说一下,我得到的错误是
undefined method `empty?' for 100029:Fixnum
好的,在您的用户类中。。。通过迁移添加一个名为“big_id_s”(String)的新列
下一个要分配的编号存储在数据库的控制表中,因此您可以更改该编号。使用任何sqlite客户端检查数据库。您的目的是隐藏URI中的id或记录数吗?你可能想看看这个宝石。。。我来看看。更重要的是有一个更实用的参考号,看起来更实用。那个宝石看起来更像是随机的。。。这可能是一种选择。理想情况下,我希望DB提交的内容类似于1000010011002。。等这是公司的内部事务,所以参观并不重要。啊,哇!看起来它不喜欢用整数作为to_参数。。。我从未意识到这是个问题。我会发布另一个解决方案。好的,我已经离开几天了。读了这篇文章,我会尝试一下,我会很快让你知道结果的。我已经在迁移文件中创建了big_id整数,并且可以在rails控制台中看到它。但是,上述代码是否会进入控制器或创建的迁移文件?每次我提交新页面时,我都会在控制台中查看,大id字段显示,上述代码的大部分应该在模型记录app/models/uer.rb中。。。带有@user=user.find_by_big_id的行应该位于控制器show/edit/update/delete actions调用的方法中。你可以把它作为一种方法来做,或者你可以在这些方法中的每一种方法中插入一行(有点不那么枯燥),好吧,我想我差不多做到了,但还不完全做到。控制器现在出现语法错误。
class User < ActiveRecord::Base
after_create :create_big_id
def to_param
big_id_s
end
def create_big_id
self.update_column(:big_id_s, (id + 100000).to_s)
self
end
end
@user = User.find_by_big_id_s(params[:id])