问题标签 [ruby-on-rails-5.1]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby-on-rails - 为什么 Rails 模型中的“包含”位置会影响 HABTM 行为?
我花了一个小时调试一个非常奇怪的 rails 行为。鉴于:
应用程序/模型/user.rb
应用程序/模型/image.rb
应用程序/模型/video.rb
应用程序/模型/tag.rb
应用程序/模型/关注/tags_functions.rb
如果我执行这样的代码:
它将提供 1 个项目image.tags
,但 2 个重复项目video.tags
但是如果我们这样修改代码:
一切正常,图像 1 个标签,视频 1 个标签
甚至更多...如果我们移到include TagsFunctions
下面 has_and_belongs_to_many :tags
的video.rb
文件中,两个代码示例都可以正常工作。
我以为我很了解 Rails,但这种行为对我来说真的不清楚。
导轨版本:5.1.1
ruby-on-rails - 基于属性大小的查询
我想知道 Rails 5 中是否可以where
查询给定长度的属性?
假设我有一个tags
在 model 上调用的序列化 Array 属性Post
,并且我想找到posts
该属性中包含 3 个以上项目的所有内容。
我会设想它看起来像这样:
如果 ActiveRecord 中有解决方案,那将是一个很大的好处。
ruby-on-rails - 找不到带有 'id'= 的世界
我有一个 World 父对象和一个 State 子对象。我正在尝试创建一个新的 State 对象,但 rails 没有找到世界 ID。我正在尝试从世界显示页面链接到新的状态表单,并且 url 显示.../worlds/1/states/new
了为什么这没有在父 ID 上出现?错误应该来自控制器中的这条线@world = World.find(params[:id])
。我(params[:world_id])
什至尝试过使用。
为简洁起见,我只在此处发布相关代码。
世界.rb
状态.rb
states_controller.rb
worlds/show.html.erb 中新状态表单的链接:
路线.rb
状态/_form.html.erb
单击“新状态”链接时的rails控制台结果
ruby-on-rails - Rails 5.1 minitest 在参数中展平数组数组
从 Rails 4.2 升级到 5.1 后,似乎只用于测试,当我提供如下内容时:
然后在控制器的参数中将其解析为:
幸运的是,对控制器的实际调用被正确解析。我显然需要修复测试,所以任何帮助都将不胜感激!
deployment - Rails 5.1 Capistrano 使用 secrets.yml.key 部署
我正在尝试使用 capistrano 部署到暂存环境。我已经设置了我的加密机密并在开发中进行了测试,并且这些机密似乎可用。我已经为read_encrypted_secrets = true
. 我的密钥文件被 git 忽略了。我已经 ssh 进入我的暂存环境并将其放在secrets.yml.key
目录中app_name/current/config
。我正在部署到 AWS EC2 实例。我没有使用RAILS_MASTER_KEY
环境变量。
当我运行cap staging deploy
并选择我的发布标签时,我在deploy:migrating
bundle exec rake db:migrate
我在服务器上有正确的密钥,为什么 rails 没有找到/使用它?
ruby-on-rails - 带有 Postgresql 扩展的 Heroku CI
我正在尝试使用 Heroku 的 CI 来运行我的 Rails 应用程序的测试,但是在尝试加载我的structure.sql
文件时遇到了问题。
这里的相关行是:
psql:/app/db/structure.sql:28: 错误: 必须是扩展 plpgsql rake 的所有者已中止!
Structure.sql 包含这一行:
关于如何在 Heroku 的 CI 上工作的任何想法?
ruby-on-rails - Rails 5.1.1 不生成脚手架/控制器等
将 rails 的本地安装从 5.0.1 更新到 5.1.1。昨夜。我现在无法让任何一代人工作,即rails g scaffold Product
或rails generate controller Welcome
. 终端根本没有反应。我必须ctrl-c
摆脱它。然后我得到以下信息:
我应该怀疑这里的春天宝石吗?
我已经跑了bundle update
。
并且:
我的 gemfile.lock:
ruby-on-rails - Rails 5.1 api渲染json加倍关系
在 Rails 5.1.1 中,我遇到了一个问题,即渲染 JSON 以某种方式“加倍”了关系的数量。
有一个 has_many / belongs_to 关系,没什么花哨的。一个“用户”有很多“代码”。逐步执行该users_controller#update
方法,我看到以下内容:
检查来自参数的内容:
检查@user.update(user_params)
调用后保存的内容:
最后,as_json
通过关系也可以直接加倍:
检查as_json
(to_json
相同)的输出:
在这里我们可以看到,不知何故,关系的数量神奇地翻了一番!有任何想法吗?
更新
我正在使用自定义函数来保存关联(autosave_associated_records_for_codes),这似乎引入了问题。我现在已经评论了它,但会尝试重新审视为什么它会加倍。一旦我找出确切的原因,就会回复一个解决方案。
ruby-on-rails - 在一个查询中获取不同模型的子代
我试图了解 Rails 中有哪些解决方案可以让同一父级查询不同模型的子级?
例如,我想获取属于同一类别的所有图像和文章,并按created_at
.
ruby-on-rails - Rails 模型在同一个表中保存了其自身类类型的多个引用
似乎没有适用于这种模式的关联序列:
每个用户都持有对同一个表中两个 OTHER 用户的引用。
该表包含两个名为和的User
字段。我一直在尝试使以下模型关联起作用:user_a_id
user_b_id
参考只需要在一个方向上工作。我只是想通过以下方式使用模型:
我永远不需要访问user_a.parent_user
. 我不需要那种关系。
当我self.user_a
在before_save
回调中引用时会出现问题。我基本上得到了一个 SQL 查询的递归循环,最终给了我一个stack too deep
错误。
有谁知道这里发生了什么?