我有一个ActiveRecord模型帐户:
class Account < ActiveRecord::Base
attr_accessible :msisdn
validates_uniqueness_of :msisdn, :on => :create,
:message => "User Already Registered ."
end
Run Code Online (Sandbox Code Playgroud)
我有一个控制器试图创建一个帐户:
begin
account = Account.create!(:msisdn => user)
rescue Exception => e
$LOG.error "Account #{user} : --> #{e.message}"
end
Run Code Online (Sandbox Code Playgroud)
现在e.message总是返回:验证失败:Msisdn用户已经注册,我应该如何只获取用户已经注册的消息.请注意,我根本不使用视图,我想从控制器使用它,我正在使用Rails 3.
提前致谢
我为我的工作开发了 git branch,我创建了一个名为feature1的新分支,并提交了1,2,3和4.
我需要将commit 3,4从feature1分支移动到新创建的分支feature2.
应该从feature1中删除提交3,4 并将其添加到新的分支feature2,因此最终结果应该是feature1 with 1和2 branch以及feature2 with 3和4.
请注意,目前我已开发并设有1个分支机构.feature2尚未添加.
实现这一目标的最佳方法是什么?我尝试了git cherry-pick但是想确保最好的方法.
假设我有一个数组:[{one: 1, two: 2}, {one: 5, two: 6}],我想使用sort_by之类的东西:
[1] pry(main)> [{one: 1, two: 2}, {one: 5, two: 6}].sort_by{|x| [x[:one], x[:two]]}
Run Code Online (Sandbox Code Playgroud)
但是,当我为其中一个值引入nil时,我得到ArgumentError: comparison of Array with Array failed:
=> [{:one=>1, :two=>2}, {:one=>5, :two=>6}]
[2] pry(main)> [{one: 1, two: 2}, {one: nil, two: 6}].sort_by{|x| [x[:one], x[:two]]}
ArgumentError: comparison of Array with Array failed
Run Code Online (Sandbox Code Playgroud)
如何避免此错误?
我有一个ruby进程,它使用amqp gem从RabbitMQ队列中消耗msgs,如下所示:
require "bundler/setup"
require "amqp"
require 'eventmachine'
require 'em-http'
AMQP.start(:host => $AMQP_URL) do |connection|
@channel ||= AMQP::Channel.new(connection)
@queue ||= @channel.queue("results")
puts " [*] Waiting for messages. "
@queue.subscribe do |body|
http = EventMachine::HttpRequest.new(URL).post :body => body
http.callback {
# do something
}
http.errback {
$LOG.error "[errorback] -> #{http.error}"
}
end
end
Run Code Online (Sandbox Code Playgroud)
现在URL很慢,队列有很多消息(> 30K),我在日志中遇到了这个错误:
**[errorback] -> unable to create new socket: Too many open files**
Run Code Online (Sandbox Code Playgroud)
任何帮助都将受到高度赞赏,因为我一直在努力寻找如何解决它,但根本没有任何结果.
提前致谢
我在application_controller.rb中有一个类方法:
def self.method1
path = some_path
end
Run Code Online (Sandbox Code Playgroud)
现在看来我无法访问some_path,因为通常我需要在控制器(实例方法)中使用route。
在这里访问路线的最佳方法是什么?
谢谢
我正在使用Ember.js 2.5.0,目前看来Ember仅限于三种环境development,test而且production.我怎样才能添加一些其他的env例如staging?
我有一个临时服务器,所以我们可以测试我们的应用程序,我想在那里使用不同的配置(比开发一个).有任何解决方法吗?
我使用的灰烬2.5.0,我有两个型号service和availability它看起来像:
// availability
import DS from 'ember-data';
export default DS.Model.extend({
day: DS.attr('string'),
enabled: DS.attr('boolean'),
startAt: DS.attr('string'),
endAt: DS.attr('string'),
service: DS.belongsTo('service')
});
Run Code Online (Sandbox Code Playgroud)
和service它看起来像:
import DS from 'ember-data';
export default DS.Model.extend({
name: DS.attr('string'),
description: DS.attr('string'),
availabilities: DS.hasMany('availability',
{
defaultValue:
[
{
day: 'saturday',
enabled: false,
startAt: '',
endAt: ''
},
{
day: 'sunday',
enabled: false,
startAt: '',
endAt: ''
}
]
}
)
});
Run Code Online (Sandbox Code Playgroud)
你可以看到我试图使用defaultValue但没有运气.对于新路线,如果我们要创建新service记录,我想设置默认值.
任何帮助表示赞赏.
我的项目有两个分支,主分支和测试分支.当我在分支测试时,我编辑了文件.gitignore我添加了vendor/*.但由于某种原因,当我做git push origin test:掌握它仍然推送供应商的文件.有没有办法刷新缓存或类似的东西,以确保它的工作?
提前致谢
如何将具有阿拉伯语/波斯语数字的字符串转换为英语?
就像我有:
str1 = "????"
str2 = "12??"
str3 = "some string that contains persian digits like ??"
Run Code Online (Sandbox Code Playgroud)
是否有任何函数将其编码为英语,如果字符串包含这样的数字来转换它,就像最终结果一样:
str1 = "1212"
str2 = "1212"
str3 = "some string that contains persian digits like 12"
Run Code Online (Sandbox Code Playgroud)
谢谢
我使用以下方法创建了一个新的RubyMotion项目:
motion create NewMotion
Run Code Online (Sandbox Code Playgroud)
然后我安装了相关的包:
bundle install
Run Code Online (Sandbox Code Playgroud)
现在每当我运行应用程序时,我都会收到错误:
? NewMotion rake
/Users/info/.rvm/gems/ruby-2.0.0-p353/gems/bundler-1.6.2/lib/bundler/runtime.rb:222: warning: Insecure world writable dir /usr/local in PATH, mode 040777
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/universal-darwin13/rbconfig.rb:212: warning: Insecure world writable dir /usr/local in PATH, mode 040777
xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance
rake aborted!
NoMethodError: undefined method `[]' for nil:NilClass
/Library/RubyMotion/lib/motion/project/xcode_config.rb:87:in `xcode_version'
/Library/RubyMotion/lib/motion/project/xcode_config.rb:99:in `validate'
/Library/RubyMotion/lib/motion/project/template/ios/config.rb:85:in `validate'
/Library/RubyMotion/lib/motion/project/config.rb:115:in `setup'
/Library/RubyMotion/lib/motion/project/app.rb:66:in `config'
/Library/RubyMotion/lib/motion/project/template/ios.rb:81:in `block in <top (required)>'
/Users/info/.rvm/gems/ruby-2.0.0-p353/bin/ruby_executable_hooks:15:in `eval'
/Users/info/.rvm/gems/ruby-2.0.0-p353/bin/ruby_executable_hooks:15:in `<main>'
Tasks: TOP => …Run Code Online (Sandbox Code Playgroud) 我正在使用Rails 4.1和我的模型:
Client has_many TicketLists
TicketList has many projects
Run Code Online (Sandbox Code Playgroud)
现在,我正在尝试在客户端模型中使用eager loading,例如:
class Client < ActiveRecord::Base
def ticket_lists_with_project_id(project_id)
ticket_lists.includes(:projects).where("projects.id = ?", project_id)
end
end
Run Code Online (Sandbox Code Playgroud)
当我这样做时:
Client.find(2).ticket_lists_with_project_id(1)
Client Load (1.7ms) SELECT "clients".* FROM "clients" WHERE "clients"."is_destroyed" = 'f' AND "clients"."is_closed" = 'f' AND "clients"."id" = $1 LIMIT 1 [["id", 2]]
PG::UndefinedTable: ERROR: missing FROM-clause entry for table "projects"
LINE 1: ...d" = 'f' AND "ticket_lists"."client_id" = $1 AND (projects.i...
^
: SELECT "ticket_lists".* FROM "ticket_lists" WHERE "ticket_lists"."is_destroyed" = 'f' AND "ticket_lists"."client_id" = …Run Code Online (Sandbox Code Playgroud) ruby ×3
ember-cli ×2
ember.js ×2
git ×2
activerecord ×1
amqp ×1
arabic ×1
ember-data ×1
encoding ×1
eventmachine ×1
git-branch ×1
github ×1
localization ×1
rabbitmq ×1
routes ×1
rubymotion ×1
validation ×1