小编Joh*_*ash的帖子

Rails原始SQL示例

如何将此代码转换为原始sql并在rails中使用?因为当我在heroku中部署此代码时,会出现请求超时错误.我认为如果我使用原始sql,这将更快.

@payments = PaymentDetail.joins(:project).order('payment_details.created_at desc')
@payment_errors = PaymentError.joins(:project).order('payment_errors.created_at desc')

@all_payments = (@payments + @payment_errors)
Run Code Online (Sandbox Code Playgroud)

sql ruby-on-rails

222
推荐指数
5
解决办法
22万
查看次数

在每个之前的所有vs之前的轨道rspec

contest_entry_spec.rb

    require 'spec_helper'

    describe ContestEntry do

      before(:all) do
        @admission=Factory(:project_admission)
        @project=Factory(:project_started, :project_type => @admission.project_type)
        @creative=Factory(:approved_creative, :creative_category => @admission.creative_category)
        @contest_entry=Factory(:contest_entry, :design_file_name => 'bla bla bla', :owner => @creative, :project => @project)
      end

      context 'non-specific tests' do
        subject { @contest_entry }
        it { should belong_to(:owner).class_name('User') }
        it { should belong_to(:project) }
        it { should have_many(:entry_comments) }

        it { should validate_presence_of(:owner) }
        it { should validate_presence_of(:project) }
        it { should validate_presence_of(:entry_no) }
        it { should validate_presence_of(:title) }

      end
end
Run Code Online (Sandbox Code Playgroud)

当我运行这些测试时,一切都很好,但是如果我在(:all)之前改变(之前):(每次),每次测试都会失败.我不知道为什么会发生这种情况?

这是错误

 Failure/Error: @contest_entry=Factory(:contest_entry, :design_file_name …
Run Code Online (Sandbox Code Playgroud)

rspec ruby-on-rails

70
推荐指数
3
解决办法
5万
查看次数

rails将列添加到用户模型

我有用户模型,我想为所有用户记录添加唯一的字符串键.列名应该是unsubscribe_key.

在迁移用户记录之前:

id = 1
username = "text"

id = 2
username = "abc"
Run Code Online (Sandbox Code Playgroud)

迁移用户记录后:

id = 1
username = "text"
unsubscribe_key = "5HQdTSsNRY6YCodmzr"

id = 2
username = "abc"
unsubscribe_key = "Jlewfw0324Lwp0sefr"
Run Code Online (Sandbox Code Playgroud)

migration ruby-on-rails

14
推荐指数
2
解决办法
3万
查看次数

Model.count和Model.count(:all)之间的rails差异

两者之间有什么区别吗?

User.count 
Run Code Online (Sandbox Code Playgroud)

User.count(:all)
Run Code Online (Sandbox Code Playgroud)

我将rails升级到4.0然后当我使用ModelName.count(:all)它运行良好但如果我使用ModelName.count以下错误发生.他们的机器人的方式在rails 3.2中运行良好

SELECT COUNT() FROM "users"
PG::WrongObjectType: ERROR:  count(*) must be used to call a parameterless aggregate function
LINE 1: SELECT COUNT() FROM "users"
Run Code Online (Sandbox Code Playgroud)

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

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

我该如何测试rails cache功能

这是我的Tag模型,我不知道如何测试Rails.cache功能.

class Tag < ActiveRecord::Base
  class << self
    def all_cached
      Rails.cache.fetch("tags.all", :expires_in => 3.hours) do
        Tag.order('name asc').to_a
      end
    end
    def find_cached(id)
      Rails.cache.fetch("tags/#{id}", :expires_in => 3.hours) do
        Tag.find(id)
      end
    end
  end

  attr_accessible :name
  has_friendly_id :name, :use_slug => true, :approximate_ascii => true
  has_many :taggings #, :dependent => :destroy
  has_many :projects, :through => :taggings
end
Run Code Online (Sandbox Code Playgroud)

你知道怎么测试吗?

caching rspec ruby-on-rails

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

将 Rails 迁移转换为原始 SQL

如何将此迁移转换为原始 sql?或者我可以转换吗?

class AddUnsubscribeTokenToUsers < ActiveRecord::Migration
  def self.up
    add_column :users, :unsubscribe_token, :string, :unique => true
    User.all.each do |user|
        user.unsubscribe_token = ActiveSupport::SecureRandom.hex(18)
    end
  end
  def self.down
    remove_column :users, :unsubscribe_token
  end
end
Run Code Online (Sandbox Code Playgroud)

sql ruby-on-rails

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

如何在Actionmailer消息中使用不同的布局?

我有project_mailer布局,但如果project_notification方法有参数,我想使用不同的方法unsubscribe_link = true.

layout "project_mail"

def project_notification(user, projects, unsubsribe_link = false)
  attachments.inline['logo_252.png'] = File.read(Rails.root + 'public/images/logo_252.png')
  @user = user
  @projects = projects

  mail(:to => user.email, :subject => "New Projects")
end
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails actionmailer

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

适用于特定作业的 ActiveJob 内联队列适配器

有没有办法将 ActiveJob 队列适配器设置为内联特定后台作业?

就我而言,我想在测试中运行一些后台作业来构建集成测试。我不关心作业内部细节,因为我的目的只是运行后台作业并断言结果。但是,这些集成测试并未涵盖所有后台作业,因此我不想全局设置队列适配器。

ruby ruby-on-rails rails-activejob

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

select*和select table name之间的区别

这是关于sql语句的基本问题.

有什么区别

SELECT * FROM "Users"
Run Code Online (Sandbox Code Playgroud)

SELECT "Users".* FROM "Users"
Run Code Online (Sandbox Code Playgroud)

sql

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

ruby on rails更好的语法

有没有更好的方法来编写这个代码.我认为它似乎很糟糕.

if !params[:project].blank?
  redirect_to project_path(params[:project])
else
  redirect_to root_url
end
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails

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