小编Dee*_*ale的帖子

rails 4 - rake命令显示每次运行rake db:migrate命令时的弃用警告

[pinterestclone]$ rake db:migrate  

DEPRECATION WARNING: Sprockets method `register_engine` is deprecated.  
Please register a mime type using `register_mime_type` then  
use `register_compressor` or `register_transformer`.  
https://github.com/rails/sprockets/blob/master/guides/extending_sprockets.md#supporting-all-versions-of-sprockets-in-processors  
 (called from block (2 levels) in <class:Railtie> at  /usr/local/lib/ruby/gems/2.3.0/gems/sass-rails-5.0.5/lib/sass/rails/railtie.rb:57)  

DEPRECATION WARNING: Sprockets method `register_engine` is deprecated.
Please register a mime type using `register_mime_type` then
use `register_compressor` or `register_transformer`.
https://github.com/rails/sprockets/blob/master/guides/extending_sprockets.md#supporting-all-versions-of-sprockets-in-processors
 (called from block (2 levels) in <class:Railtie> at /usr/local/lib/ruby/gems/2.3.0/gems/sass-rails-5.0.5/lib/sass/rails/railtie.rb:58)

== 20160721232702 AddUserIdToPins: migrating ==================================  
-- add_column(:pins, :user_id, :integer)  
   -> 0.0010s  
-- add_index(:pins, :user_id)  
   -> 0.0010s  
== 20160721232702 AddUserIdToPins: …
Run Code Online (Sandbox Code Playgroud)

rake ruby-on-rails

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

如何将其他列的值复制为rails迁移中新列的默认值?

我有一个带有列的模型price.我需要添加一个new_column,marked_price其值为price默认值.我可以在迁移中写这个,或者最好的方法是什么?

就像是:

class AddMarkedPriceToMenuItems < ActiveRecord::Migration
  def change
    add_column :menu_items, :marked_price, :decimal, :default => :price
  end
end
Run Code Online (Sandbox Code Playgroud)

migration activerecord ruby-on-rails

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

Spree 3.0在扩展中添加了允许的属性

所以我正在制作一个狂欢扩展,其中我有自己的属性,我Spree::Shipment在结帐过程中添加并添加了一个输入,问题是我的属性不是出货的允许属性的一部分,并且不清楚如何将其添加到允许的属性中.我找到了这个拉动请求的对话,据说要使用

Spree::PermittedAttributes.shipment_attributes << :my_custom_attribute
Run Code Online (Sandbox Code Playgroud)

但是,目前还不清楚我在哪里放这个!?

"哦,把它放进去spree.rb"

这没有用.我试过把这段代码放进去

lib/spree.rb
lib/spree/permitted_attributes.rb
lib/spree_decorator.rb
lib/spree/permitted_attributes_decorator.rb
Run Code Online (Sandbox Code Playgroud)

(如此处所示)并且所有这些都导致错误抱怨shipment_attributes未被定义(因此可能是在PermittedAttributes评估主文件定义之前运行代码)或者根本没有任何反应.我应该在哪里放置此代码以将我的属性添加到允许的属性列表中?


编辑:由于这对人们来说似乎不清楚,我已经尝试了我发布的链接中列出的所有内容.告诉我尝试其中的东西是非常令人愤怒的.别那样做.

ruby spree strong-parameters ruby-on-rails-4

9
推荐指数
2
解决办法
1599
查看次数

设计令牌身份验证错误

我目前有一个使用Devise Token Auth运行的Rails 5应用程序,它部署在heroku上.

登录并注册所有工作正常,但是,如果重新启动应用程序,下次登录,给我一个500,有以下错误..任何想法?

我已经缩小了这个bug,它只发生在Heroku上.在生产模式下本地运行时,它很好.

vendor/bundle/ruby/2.3.0/gems/devise_token_auth-0.1.42/app/controllers/devise_token_auth/sessions_controller.rb:42:in `[]='
vendor/bundle/ruby/2.3.0/gems/devise_token_auth-0.1.42/app/controllers/devise_token_auth/sessions_controller.rb:42:in `create'
Run Code Online (Sandbox Code Playgroud)

设计初始化:

Devise.setup do |config|
  config.secret_key = 'xxx'
Run Code Online (Sandbox Code Playgroud)

设计令牌身份验证器:

DeviseTokenAuth.setup do |config|
  config.change_headers_on_each_request = false
  config.token_lifespan = 1.year
end
Run Code Online (Sandbox Code Playgroud)

Profile.rb(处理身份验证的模型):

devise :database_authenticatable, :registerable,
       :recoverable, :trackable, :validatable
include DeviseTokenAuth::Concerns::User
Run Code Online (Sandbox Code Playgroud)

堆栈跟踪更长

2017-08-21T13:47:59.917645+00:00 app[web.1]: I, [2017-08-21T13:47:59.917547 #4]  INFO -- : [8f6962a7-f07c-4754-959c-c51dafa37d76] Started POST "/auth/sign_in" for 82.163.112.30 at 2017-08-21 13:47:59 +0000
2017-08-21T13:48:00.165030+00:00 app[web.1]: [8f6962a7-f07c-4754-959c-c51dafa37d76] vendor/bundle/ruby/2.3.0/gems/actionpack-5.1.3/lib/action_controller/metal/basic_implicit_render.rb:4:in `send_action'
2017-08-21T13:48:00.165036+00:00 app[web.1]: [8f6962a7-f07c-4754-959c-c51dafa37d76] vendor/bundle/ruby/2.3.0/gems/activesupport-5.1.3/lib/active_support/notifications.rb:166:in `instrument'
2017-08-21T13:47:59.925118+00:00 app[web.1]: I, [2017-08-21T13:47:59.925047 #4]  INFO -- : [8f6962a7-f07c-4754-959c-c51dafa37d76] Processing by DeviseTokenAuth::SessionsController#create …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails heroku devise

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

CodeIgniter Active Record与常规查询

目前我使用CodeIgniter进行常规查询,即:

$sql = "
    SELECT *
    FROM my_table
    WHERE item_id > 1
";    
$q = $this->db->query($sql);
Run Code Online (Sandbox Code Playgroud)

我已经开始研究ActiveRecord,它确实看起来不错,并且无论使用哪个数据库驱动程序都具有构建查询的优势 - 但是,我通常严格使用每个项目的单个数据库类型,所以这不是真正的对我有利.

我发现在我看来,常规查询(正如我在我的示例中所示)更易读,更容易维护,因此我目前正在考虑保持常规查询.

除了上面提到的原因,我应该选择哪个,以及原因是什么?

谢谢

database activerecord codeigniter

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

Rails Mailer使用SendGrid模板

如何使用smtpapi-ruby gem将我的rails邮件绑定到Sendgrid?我已经按照他们有限的文档,但我的电子邮件没有通过,我已经验证我的SendGrid实现只是发送一个普通的电子邮件,所以不是这样.这就是我所拥有的:

user_controller.rb

def create
    @user = User.new(user_params)

    respond_to do |format|
      if @user.save
        format.html { redirect_to @user, notice: 'User was successfully created.' }
        format.json { render :show, status: :created, location: @user }


        header = Smtpapi::Header.new
        header.add_to(@user.email)
        header.add_substitution('user', [@user.name])
        header.add_substitution('body', "You've registered! This is from the controller.")
        header.add_filter('templates', 'enable', 1)
        header.add_filter('templates', 'template_id', 'xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx')
        header.to_json

        UserNotifier.welcome(header).deliver
      else
        format.html { render :new }
        format.json { render json: @user.errors, status: :unprocessable_entity }
      end
    end
  end
Run Code Online (Sandbox Code Playgroud)

邮寄/ user_notifier.rb

class UserNotifier < ApplicationMailer
  default …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails actionmailer sendgrid

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

Rails没有加载可安装引擎的js

我已经包含在安装导轨引擎Gemfile作为

gem 'my_engine', :path => 'engines/my_engine'
Run Code Online (Sandbox Code Playgroud)

并安装在主应用程序中

Rails.application.routes.draw do
  mount MyEngine::Engine => "/blog", as: 'blog_engine'
end
Run Code Online (Sandbox Code Playgroud)

app/engines/my_engine/app/assets/javascripts/my_engine/application.js我有

alert('hello');
Run Code Online (Sandbox Code Playgroud)

app/engines/my_engine/lib/my_engine/engine.rb我补充说

module MyEngine
  class Engine < ::Rails::Engine
    isolate_namespace MyEngine

    # Append engine's migrations to root app's migrations
    initializer :append_migrations do |app|
      unless app.root.to_s.match root.to_s
        config.paths["db/migrate"].expanded.each do |expanded_path|
          app.config.paths["db/migrate"] << expanded_path
        end
      end
    end

    config.autoload_paths += Dir["#{config.root}/spec/support"]

    initializer "my_engine.precompile" do |app|
      app.config.assets.paths << Rails.root.join('/engines/my_engine/app/assets/javascripts')
      app.config.assets.precompile << "my_engine/application.js"
    end

  end
end
Run Code Online (Sandbox Code Playgroud)

但是当我重新加载http://localhost:3000/blog警报消息时没有出现?我错过了什么?

ruby-on-rails rails-engines asset-pipeline

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

如何在 Fargate 容器中启动 Rails 控制台

我想在 Fargate 容器中打开 Rails 控制台以与我的生产安装进行交互

然而,在搜索网络并在 AWS 论坛上发帖后,我找不到这个问题的答案

有谁知道我该怎么做?这似乎是任何生产环境中都必须具备的东西,但对于像 AWS 这样受人尊敬的云提供商却没有简单的方法来做到这一点,这有点令人惊讶

谢谢

console ruby-on-rails amazon-web-services amazon-ecs aws-fargate

7
推荐指数
2
解决办法
5463
查看次数

Rails ActiveRecord条件回调问题

红宝石2.1.8导轨3.2.18

我正在尝试在仅在特定属性已更改时保存记录时运行回调.例如

before_save :do_the_thing, if: :my_attr_changed?
Run Code Online (Sandbox Code Playgroud)

但是,当我改变my_attr并保存时,do_the_thing不会被调用.然而,如果我做同样的事情,但是:

before_save :do_the_thing

def do_the_thing
  puts my_attr_changed?
end
Run Code Online (Sandbox Code Playgroud)

它在日志中输出"true".在这里相当困惑.任何帮助赞赏.谢谢.

ruby ruby-on-rails

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

Firebase Analytics信息中心与BigQuery导出之间的"活跃用户指标"存在差异

根据Firebase Analytics文档(https://support.google.com/firebase/answer/6317517#active-users),有效用户数是指在指定日期启动会话的唯一身份用户数.此外,根据文档,每次启动会话时,都会session_start发送带有名称的事件.我试图使用BigQuery的导出获得该指标,但我的查询给出了不同的结果(BigQuery上的15636,FB分析上的14908)

我也试过转换到不同的时区,看看是否可能是问题,但无论我尝试哪个时区,我都没有得到相同(或类似)的结果

我应该运行哪个查询来获得针对活跃用户的Firebase Analytics信息中心获得的相同结果?

我的疑问是

SELECT EXACT_COUNT_DISTINCT(user_dim.app_info.app_instance_id)
FROM table_date_range([XXXXX.app_events_], timestamp('2016-11-26'), timestamp('2016-11-29')) 
WHERE DATE(event_dim.timestamp_micros) = '2016-11-27' 
AND  event_dim.name ='session_start'  
Run Code Online (Sandbox Code Playgroud)

谢谢

更新

@djabi的回答后,我改变了我的查询使用user_engagement而不是session_start现在它的效果要好得多.尽管如此仍然存在一些细微的差异(根据日期,它们在16K的范围内从10以下到50以下).

我曾尝试过再次使用不同的时区,DATE(date_add(event_dim.timestamp_micros,1,'hour'))但我从来没有得到Firebase Analytics仪表板上的确切数字.

新数字足以被认为是统计上可接受的,但想知道是否有人有建议改进查询并获得确切的结果?

当前查询是:

SELECT
  COUNT(*) AS active_users
FROM (
  SELECT
    COALESCE(user_dim.user_id, user_dim.app_info.app_instance_id) AS user_id
  FROM
    TABLE_DATE_RANGE([XXXXX.app_events_], TIMESTAMP('2016-11-24'), TIMESTAMP('2016-11-29'))
  WHERE
    DATE(event_dim.timestamp_micros) = '2016-11-25'
    AND event_dim.name ='user_engagement'
  GROUP BY
    user_id )
Run Code Online (Sandbox Code Playgroud)

注意:目前我们没有发送user_id,所以COALESCE总会返回app_instance_id,以防有人提出可能是问题

firebase google-bigquery firebase-analytics

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