Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.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
Sqlite关于Id'的问题;s_Sql_Ruby On Rails_Ruby_Sqlite - Fatal编程技术网

Sqlite关于Id'的问题;s

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

我有一个rails上的web应用程序,用户可以通过它提交存储在sqlite数据库中的数据。当提交页面显示时,它会显示DBID编号,这将是该提交的用户ID,以供以后参考。这是有意义的,因为它是一个唯一的数字

但是,我可以让这个数字从
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])