Tag: postgresql

在React迭代中显示最后一个子节点

我正在尝试实现一个消息应用程序,暂时没有ActionCable。 当我映射所有邮件时,我只想显示来自该用户的最后一条消息:我只显示最后一条消息,而不是显示来自用户的所有消息。 我不知道如何实现这一目标。 我以为我可以将key设置为user_id而不是id 。 _messagesRender: function(){ var messages = this.props.message.map( function(m, i){ return( {m.body} ) }); return( {messages.length === 0 ? “No messages” : messages} ) }, 这个组件在索引页面上,我正在尝试创建一个类似消息的应用程序。 任何与React的指针? Rails 5用作后端。 警告:flattenChildren(…):遇到两个孩子用同一把钥匙, .$2 。 子键必须是唯一的; 当两个孩子共用一把钥匙时,只会使用第一个孩子。 后端: @messages = Message.where(to: current_user.id) 消息模型:: :id, :to, :user_id, :body user_id是发送/创建消息的人。

如何更改rails migration t.timestamps以在postgres中使用`timestamp(0)without timezone`

我试图找出如何更改t.timestamps在rails迁移中使用的本机数据类型。 最终在postgres中的默认类型是timestamp without timezone 。 我想要的是timestamp(0) without timezone 。 我想更改本机数据类型,以便在创建新表并在迁移中使用t.timestamps ,它会自动创建正确的时间戳数据类型。 我需要timestamp(0) without timezone因为我的rails应用程序与laravel应用程序共享其数据库,并且两个应用程序都可以插入数据。 由于rails使用毫秒/ laravel的事实没有,并且似乎没有办法(截至2018-10-23)laravel支持包含不同格式的时间戳的表( Ymd H:i:su vs Ymd H:i:s )无需关闭模型中的时间戳,基本上禁用它们的自动管理,我想让数据库强制使用单一格式( Ymd H:i:s )。 有关更多详细信息,请另外提问: 有没有办法将Rails默认时间戳更改为Ymd H:i:s(而不是Ymd H:i:su)或laravel忽略Ymd H的小数部分:i:su? 所以我想使用timestamp(0)来截断毫秒,而不必考虑在创建新表时正确设置表时间戳类型,因为本机类型已经是timestamp(0) 我试过这个 ./config/environments/initializers require “active_record/connection_adapters/postgresql_adapter” module ActiveRecord module ConnectionAdapters class PostgreSQLAdapter NATIVE_DATABASE_TYPES.merge!( timestamp: { name: “timestamp(0) without timezone” } ) end end end 和像这样的迁移 class […]

你如何在Rails中定义postgres函数以及它们的范围和生命周期是什么?

我对Postgresfunction一无所知,但是最近需要使用它们(这可能表明我正在接近问题,但无论如何……) 我想定义一个这样的Postgres函数,然后我将通过我的Rails应用程序中的查询访问: CREATE FUNCTION date_in_time_zone(time_zone) RETURNS date AS ‘SELECT DATE(NOW() AT TIME ZONE time_zone);’ LANGUAGE SQL; (来自这个问题 )。 问题第1部分:如何定义此function? 我认为我会按如下方式这样做: sql = “CREATE FUNCTION date_in_time_zone(time_zone) RETURNS date AS ‘SELECT DATE(NOW() AT TIME ZONE time_zone);’ LANGUAGE SQL;” ActiveRecord::Base.connection.execute sql 它是否正确? 问题第2部分:该function的范围和寿命是多少? 一旦定义,此function持续多长时间以及管理该function的版本控制的最佳方式是什么。 如果它是在数据库而不是Rails中定义的那么我将不得不小心销毁它或更新它,如果我想改变它的工作方式。 每次加载Rails环境时,我还需要一些初始化函数的方法。 我应该在初始化应用程序时创建一次该函数,还是需要为每个Web请求创建它? 我认为前者是在数据库中定义的,但我不确定。 问题第3部分:我是否应该使用这种方法? 这只是一个坏主意吗? 我应该尝试以不同的方式解决问题吗? 我真的不知道这些function的范围或寿命是多少。

在rails中找不到pg_dump

我安装了postgres,但是当我尝试在rails项目中转储我的数据库模式(sql)时,我一直在控制台pg_dump中找不到这条错误信息。 任何人都可以帮忙解决这个问题吗?

Rails和postgres – 在heroku上部署时忽略了pg gem

我在heroku上部署我的应用程序时遇到问题。 我已经将’pg’gem添加到Gemfile中,甚至尝试包含类似gem’therubyracer-heroku’的内容。 中 heroku rake db:migrate 我得到这样的东西: >heroku rake db:migrate –trace ** Invoke db:migrate (first_time) ** Invoke environment (first_time) ** Execute environment rake aborted! Please install the postgresql adapter: `gem install activerecord-postgresql-adap ter` (pg is not part of the bundle. Add it to Gemfile.) /app/.bundle/gems/ruby/1.9.1/gems/activerecord-3.1.1/lib/active_record/connectio n_adapters/abstract/connection_specification.rb:71:in `rescue in establish_conne ction’ 另一个有趣的部分是,在捆绑安装操作期间没有提到推送到heroku pg,就像它被忽略一样。 我也看过Gemfile.lock和pg在那里提到: pg (0.11.0-x86-mingw32) […]

数组不会持久保存到数据库

我正在尝试在我的数据库中存储一个数组(:vehicles)。 该arrays由用户通过复选框选择的3种可能的车辆组成。 ‘:vehicles’属性类型是’text’,我使用此代码使其成为一个数组: serialize :vehicles, Array 如果我发送参数,它会在数组中获取这些值。 “vehicles”=>[“0”, “1”, “2”], “commit”=>”Sign up!”, “controller”=>”registrations”, “action”=>”create” 问题是当我尝试保存时,此数组不存储在数据库中。 在数据库中,代码如下所示: vehicles: [] 控制器代码: def create @student = Student.create(student_params) if @student.save! redirect_to @student else render :new end end 学生参数: def student_params params.require(:student).permit(availabilities_attributes: [ :id, :day, :available]) end 任何人都知道如何将这些值放入此数组中? 谢谢!

SQL查询和ActiveRecord.find_by_sql如何返回不同的结果?

我有一个难题。 我在我的Account类上编写了一个范围,它找到了一堆符合冗长条件的帐户对象。 这是我的范围: scope :unverified_with_no_associations, -> { find_by_sql(“SELECT COUNT(DISTINCT(accounts.id, accounts.email)) FROM accounts WHERE level = 0 AND id NOT IN (SELECT DISTINCT(account_id) FROM verifications) AND id NOT IN (SELECT DISTINCT(account_id) FROM positions) AND id NOT IN (SELECT DISTINCT(account_id) FROM edits) AND id NOT IN (SELECT DISTINCT(account_id) FROM posts) AND id NOT IN (SELECT DISTINCT(account_id) FROM […]

如何将ActiveRecord模型属性从json迁移到jsonb?

迁移应该是什么样的? 我想利用jsonb数组查询技术。

Rails有活跃记录一次性获取所有需要的关联吗?

我有一个模型评论,其中有一个用户。 在我的显示页面中,我正在做一个Comment.all ,然后显示每个评论。 在视图中,我不仅需要显示注释,还需要显示关联用户(即作者)的信息。 …etc… 这很好,所有,但activerecord将其转换为一个SELECT * FROM users WHERE USER.id = commentId查询每个EACH评论我有。 这有点荒谬,特别是在有数百条评论的页面上。 (那是数百个单独的DB命中!) 当我在做Comment.all时,有没有告诉rails不仅要抓取评论,还要抓住相关用户,然后当我稍后调用comment.user.blah时,为了不再从db中获取它? (这样它就可以在一个db语句中完成所有操作)。

为什么我的Rails 4 / Postgres中的所有表都以1的“维度”创建?

我试图用Postgres在Rails 4中进行基本的模型生成和迁移,我遇到了很多问题。 我安装了pg gem,版本为0.17.1 。 在开始时,我甚至无法无错误地运行迁移,因为schema_migrations表是使用维度为1的version列创建的。 一旦我手动将其更改为零,它工作正常。 现在,如果我查看由于使用Rails模型生成器而导致的所有迁移,我会看到每个列(每个表中的id列除外)都是使用dimension 1创建的。 我需要更改一些默认设置吗? 这是不正确的,我搞乱别的东西? 这是我的第一个Rails 4项目,所以我只想弄清楚为什么它希望所有这些列都默认为一个数组。 这是我的一个迁移文件: class CreateCatalogs < ActiveRecord::Migration def change create_table :catalogs do |t| t.string :name t.text :description t.string :schema_name t.string :catalog_type t.boolean :billable t.timestamps end end end 这是来自schema.rb : create_table “catalogs”, force: true do |t| t.string “name”, array: true t.text “description”, array: true t.string […]