小编cod*_*ted的帖子

使用设计保护活动存储

使用devise gem验证应用程序的所有用户.我正在尝试实现Active Storage.

假设所有用户一旦到达应用程序就必须进行身份验证:

class ApplicationController < ActionController::Base
  before_action :authenticate_user!

...
end
Run Code Online (Sandbox Code Playgroud)

如何保护Active Storage生成的路由?

无需先进行身份验证即可访问上载文件的URL.未经身份验证的用户可以获取Active Storage生成的文件URL.

ruby-on-rails rails-activestorage

12
推荐指数
2
解决办法
2246
查看次数

Rails生成的迁移没有设置:null => false到created_at和update_at

我创建了一个全新的rails应用程序,生成一些脚手架和一些模型.经过几次测试后,我意识到t.timestamps生成的列不包含"traditional":null => false选项.我需要这种行为,我看不出这是做什么的.

我重新创建了一个新的应用程序,认为这是一个新的rails 4功能,但我无法获得保存行为.在这个应用程序中,timespamp正常工作.

在我创建帖子的rails控制台中的"窃听应用"中,我们可以看到:

Loading development environment (Rails 4.0.1)

2.0.0-p247 :001 > Post.create(title:"test") 

(0.1ms)  begin transaction SQL (8.6ms)  INSERT INTO "posts" ("created_at", "title", "updated_at") VALUES (?, ?, ?)  [["created_at", Wed, 27 Nov 2013 21:19:01 EST -05:00], ["title", "test"], ["updated_at", Wed, 27 Nov 2013 21:19:01 EST -05:00]]
(0.8ms)  commit transaction
=> #<Post id: 1, title: "test", content: nil, excerpt: nil, dashboard: nil, created_at: "2013-11-28 02:19:01", updated_at: "2013-11-28 02:19:01"> 

2.0.0-p247 :002 > Post.last

Post Load (0.4ms)  SELECT "posts".* FROM "posts" …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails

4
推荐指数
1
解决办法
3223
查看次数

用于更改引用列上的 on_delete 选项的迁移

我正在和 Phoenix 一起玩,并建立了 has_many 关联。我通常将其on_delete: :delete_all作为参考列的一个选项。但是,如果我改变主意并想稍后更改它nilify_all,那么在迁移内部有没有办法做到这一点?

创建表的迁移:

  def change do
    create table(:messages) do
      add :body, :text
      add :sender_id, references(:users, on_delete: :delete_all)

      timestamps()
    end
    create index(:messages, [:sender_id])

  end
Run Code Online (Sandbox Code Playgroud)

我正在寻找这样的东西:

def change do
  change_options table(:messages), :user_id, on_delete: :nilify_all
end
Run Code Online (Sandbox Code Playgroud)

我见过修改改变,但我没有看到关于 on_delete 的任何内容。也许通过迁移不可能?

elixir ecto phoenix-framework

3
推荐指数
1
解决办法
1437
查看次数

无法使 postgres 非重音扩展在导轨上工作

在一个工作应用程序中,我试图实现非重音查询。

pg-gem version 0.21
postgresql version 9.5/9.6
rails version 4
Run Code Online (Sandbox Code Playgroud)

我首先创建/启用这里的扩展是迁移:

def up
  execute 'CREATE EXTENSION IF NOT EXISTS unaccent'
end

def down
  execute 'DROP EXTENSION IF EXISTS unaccent'
end
Run Code Online (Sandbox Code Playgroud)

迁移运行良好。psql \dx显示扩展已打开。一个简单的 unccent 查询psql显示它按预期工作。

当我尝试查询这样的东西时:

people = people.where('unaccent(people.first_name) ILIKE unaccent(?)', "%#{params[:first_name]}%") if params[:first_name].present?
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

PG::UndefinedFunction: ERROR:  function unaccent(character varying) does not exist
Run Code Online (Sandbox Code Playgroud)

起初我认为连接是错误的数据库,因为我玩了很多版本,但在确保不是这种情况后,错误仍然存​​在。

完全确定我也在测试服务器上测试它,结果是同样的错误。

由于 db 级别的一切似乎都很好,因此我怀疑在 Rails 方面存在某些问题,但我不知道如何进一步调查。

欢迎任何帮助/建议!

postgresql ruby-on-rails ruby-on-rails-4

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

rake db:迁移不推动迁移

我正在使用教程学习Rails,在Nitrous.io中工作并修改了我的迁移文件以创建模型之间的关系.这是一个简单的时间跟踪应用程序.其中一个已修改的迁移文件的示例如下:

class CreateWorks < ActiveRecord::Migration
  def change
    create_table :works do |t|
      t.integer :project_id
      t.integer :user_id
      t.datetime :datetimeperformed
      t.decimal :hours, precision: 5, scale: 2
      t.timestamps
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

项目ID,用户ID,datetimeperformed和hours都是新的,但是当我运行rake db:migrate将它们推送到schema.rb时,没有任何反应.它暂停然后给我一个新的提示,但schema.rb文件没有被修改.

我已经得出结论,由于某种原因,迁移不会通过,但不知道为什么.有什么明显的东西我做错了吗?谢谢你的帮助.

ruby-on-rails

0
推荐指数
1
解决办法
390
查看次数

分配是否可以自动匹配请求中的子域以找出来源

我们在同一个域中添加了许多几乎相同的应用程序,每个应用程序都可以通过其特定的子域访问。每个应用程序都有特定的资产(不是很多)。

每个应用程序都引用相同的内容cdn.mydomain.com以从 Cloudfront 获取资产。

资产以间隔命名。举个例子:

应用程序1:

  • 可以从 app1.mydomain.com
  • 资产网址是 cdn.mydomain.com/assets/app1
  • 云端原点 app1.mydomain.com
  • 缓存行为/assets/app1/*到原点app1.mydomain.com

当 Cloudfront 缓存中没有资产时,它会从正确的来源下载资产。

实际上,每次添加新应用程序时,我们都会在同一发行版上创建新的来源和缓存行为。

我们正在尝试简化该过程,以便 Cloudfront 能够从正确的来源获取资产,而无需指定它。如果我们在一个分布中达到原始数量的限制,这将解决问题。

我们怎样才能做到这一点,这可能吗?

我们正在考虑mydomain.com使用缓存配置来转发host标头,但我们不确定这是否会奏效。

cdn amazon-web-services amazon-cloudfront

0
推荐指数
1
解决办法
774
查看次数