当我通过命令连接到Redis服务器时,我收到错误NOAUTH身份验证:redis-cli并运行ping以检查Redis是否正常工作.
我找到了NOAUTH Authentication required错误的答案,该错误描述了只有当Redis设置了密码时才会发生此错误,但我检查了Redis配置文件,etc/redis/redis.conf并且没有设置密码.
有没有人知道,如果有其他设置可以导致此错误?谢谢你的帮助.
p/s:我使用的是Ruby on Rails Web框架,Redis数据库用于Sidekiq.
编辑:Redis版本是2.8.4.服务器托管在AWS上.
目前,我决定为Redis服务器设置一个密码,以便在运行时无法设置密码.
(重新启动Redis服务器时,它将正常工作.您可以运行sudo service redis-server restart以重新启动Redis服务器.)
在我的general_exams表中,我有一个名为的列semester,类型是string.现在我想将其名称更改为semester_id,type is integer.我已阅读有关迁移的信息,它有可用的转换:
所以,我创建了这样的迁移文件:
class RenameSemesterFromGeneralExams < ActiveRecord::Migration
def change
rename_column :general_exams, :semester, :semester_id
change_column :general_exams, :semester_id, :integer
end
end
Run Code Online (Sandbox Code Playgroud)
但是,当我跑rake db:migrate,它有错误:
== RenameSemesterFromGeneralExams: migrating =================================
-- rename_column(:general_exams, :semester, :semester_id)
-> 0.0572s
-- change_column(:general_exams, :semester_id, :integer)
rake aborted!
An error has occurred, this and all later migrations canceled:
PG::Error: ERROR: column "semester_id" cannot be cast to type integer
: ALTER TABLE "general_exams" ALTER COLUMN "semester_id" TYPE integer …Run Code Online (Sandbox Code Playgroud) 我正在使用Ruby on Rails和pg_search gem在我的项目中使用PostgreSQL数据库进行全文搜索功能.目前,我有一个列表医院,名称如下:
Hospital A
Hospital C
Hospital D
Hospital B A
Run Code Online (Sandbox Code Playgroud)
当我进行搜索时,我希望这个单词Hospital不会影响返回的结果,结果可以不带Hospital前缀排序.
例如,如果我Hospital在查询字段中输入,将没有返回的结果,但如果我输入A,Hospital A并且Hospital B A将是结果,那么结果可以按字母顺序排序而不包含Hospital前缀单词以成为列表:
Hospital A
Hospital B A
Run Code Online (Sandbox Code Playgroud)
我搜索了这个并找到了这个答案:高级MySQL按字母顺序排序前缀?,但答案使用的视图,我不知道如何在Rails中做到这一点.
我不确定pg_search gem是否支持SUBSTRING,因为我在其github上找不到关于它的文档.有谁知道Postgres是否具备做这种工作的功能?
谢谢你的帮助.
更新:我最终使用一列来存储此前缀单词,以便我可以搜索内容并从查询中排除该单词并返回预期结果.对于遇到此问题的任何人,请考虑并尝试我的解决方案,如果它可以拯救你.
sql postgresql ruby-on-rails ruby-on-rails-3 ruby-on-rails-4
这是我的git状态:
# On branch create-views-question
# Changes not staged for commit:
# (use "git add/rm <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# deleted: solr/data/development/index/_0.fdt
# deleted: solr/data/development/index/_0.fdx
# deleted: solr/data/development/index/_0.fnm
# deleted: solr/data/development/index/_0.frq
...
Run Code Online (Sandbox Code Playgroud)
目前,我曾经git rm一个接一个地删除文件,还有另一种方式,所以我可以同时删除它们吗?
我有模型项目和位置.
这是我的Item模型的迁移文件:
class CreateItems < ActiveRecord::Migration
def change
create_table :items do |t|
t.string :item_cd
t.string :item_name
t.integer :location_id
t.timestamps
end
end
end
Run Code Online (Sandbox Code Playgroud)
我使用form_tag创建一个表单来创建新项目.但是当我创建新Item时,Rails会生成如下SQL:
Location Load (0.3ms) SELECT `locations`.* FROM `locations` WHERE `locations`.`location_cd` = 'jp' LIMIT 1
Item Load (0.2ms) SELECT `items`.* FROM `items` WHERE `items`.`item_cd` = '6' LIMIT 1
(0.1ms) BEGIN
Item Exists (0.2ms) SELECT 1 FROM `items` WHERE `items`.`item_cd` = BINARY '6' LIMIT 1
SQL (0.6ms) INSERT INTO `items` (`created_at`, `item_cd`, `item_name`, `location_id`, `updated_at`) VALUES ('2013-04-17 03:26:42', '6', 'Glasses', …Run Code Online (Sandbox Code Playgroud) 我有一个名为的列test_date,输入datetimeGeneral Exam表.我在表单上构建了一个表单来创建和更新GeneralExam,我允许用户选择一个日期和时间jQuery UI Datepicker.
用户选择日期和时间后,它将显示在文本字段中,如:
25-11-2012 16:30
这是我现在的时间.当我在控制台中运行时,我看到test_date保存在数据库中的是:
2012-11-25 09:30:00
当我获得对象GeneralExam并获得test_date价值时,它是:
g = GeneralExam.last
g.test_date
=> Sun, 25 Nov 2012 16:30:00 ICT +07:00
Run Code Online (Sandbox Code Playgroud)
我认为test_date是转换,因为我设置的application.rb是:
config.time_zone = 'Hanoi'
Run Code Online (Sandbox Code Playgroud)
但是当我在表单上更新常规考试时,它仍然显示时间保存在数据库中,而不是我的本地时区,这意味着它显示:
2012-11-25 09:30:00
但我希望它就像我在表单上选择的那样:
25-11-2012 16:30:00
如何在本地时间设置显示日期时间列?
而且我认为日期的顺序是相反的,当我选择日期时,它是25-11-2012,但是当它显示它时2012-11-25,为什么它颠倒了顺序?
我用Prawn创建了pdf文件,我想将徽标放在文件中.我查看了这个网站创建pdf以引用如何添加图像.
这是我ExamResultPdf.rb生成pdf的文件代码:
def initialize(exam, view)
super(top_margin: 70)
@exam = exam
exam_number # line 9, I removed codes are not relevant
end
def exam_number
logo_path = "#{Rails.root}/app/assets/images/logo_hoasen.png"
image logo_path, height: 200, width: 200
text "Examination Result \##{@exam.id}", size: 30, style: :bold
end
Run Code Online (Sandbox Code Playgroud)
但是当我去页面时/result.pdf,它有错误:
Prawn::Errors::UnsupportedImageType in ExamsController#result
PNG uses unsupported interlace method
# Trace
app/pdfs/exam_result_pdf.rb:18:in `exam_number'
app/pdfs/exam_result_pdf.rb:9:in `initialize'
app/controllers/exams_controller.rb:43:in `new'
app/controllers/exams_controller.rb:43:in `block (2 levels) in result'
app/controllers/exams_controller.rb:40:in `result'
Run Code Online (Sandbox Code Playgroud)
我的exams_controller:
def result
@exam = Exam.find(params[:id]) …Run Code Online (Sandbox Code Playgroud) 我有2个型号:
这是两个模型中的列:
我想通过加上TopicQuestion中每个主题的number_question来计算一般考试的总问题数.所以我写了一个像这样的方法:
class GeneralExam < ActiveRecord::Base
has_many :topic_questions, dependent: :destroy
validates :number_question, numericality: { only_integer: true, greater_than: 0 }, on: :save
after_save :calc_number_question
private
def calc_number_question
number_question = 0
self.topic_questions.each do |tq|
number_question += tq.number_question
end
self.number_question = number_question
self.save
end
end
Run Code Online (Sandbox Code Playgroud)
但是当我提交时,我收到错误:
SystemStackError in GeneralExamsController#create
stack level too deep
Run Code Online (Sandbox Code Playgroud)
这是我的参数:
{"utf8"=>"?",
"authenticity_token"=>"VyojDMOltc5wOJMDf4gtDM6lEk6soTZl/EaY9qrCRyY=",
"general_exam"=>{"course_id"=>"1",
"name"=>"dada",
"description"=>"dada",
"semester_id"=>"1",
"duration"=>"1",
"topic_questions_attributes"=>{"0"=>{"_destroy"=>"false",
"topic_id"=>"15",
"number_question"=>"15"},
"1"=>{"_destroy"=>"false",
"topic_id"=>"13",
"number_question"=>"6"},
"2"=>{"_destroy"=>"false",
"topic_id"=>"Choose a topic",
"number_question"=>""},
"3"=>{"_destroy"=>"false",
"topic_id"=>"Choose a topic",
"number_question"=>""},
"4"=>{"_destroy"=>"false", …Run Code Online (Sandbox Code Playgroud)