在添加Devise gem之前,我有一个工作模型。安装Devise并运行后rails generate devise User,我开始出现此错误。
每当我去Rails控制台输入
User.first
要么
User.create(username: "Iggy1", email: "iggy1@gmail.com", password: "helloworld", password_confirmation: "helloworld")
它总是返回
User Load (0.3ms) SELECT "users".* FROM "users" ORDER BY "users"."id" ASC LIMIT 1
ArgumentError: wrong number of arguments (0 for 1)
from /Users/iggy/.rvm/gems/ruby-2.2.2/gems/devise-4.2.0/lib/devise/models/database_authenticatable.rb:146:in `password_digest'
from /Users/iggy/.rvm/gems/ruby-2.2.2/gems/activemodel-4.2.5/lib/active_model/serialization.rb:108:in `block in serializable_hash'
from /Users/iggy/.rvm/gems/ruby-2.2.2/gems/activemodel-4.2.5/lib/active_model/serialization.rb:108:in `each'
from /Users/iggy/.rvm/gems/ruby-2.2.2/gems/activemodel-4.2.5/lib/active_model/serialization.rb:108:in `serializable_hash'
from /Users/iggy/.rvm/gems/ruby-2.2.2/gems/activerecord-4.2.5/lib/active_record/serialization.rb:17:in `serializable_hash'
from /Users/iggy/.rvm/gems/ruby-2.2.2/gems/devise-4.2.0/lib/devise/models/authenticatable.rb:114:in `serializable_hash'
from /Users/iggy/.rvm/gems/ruby-2.2.2/gems/devise-4.2.0/lib/devise/models/authenticatable.rb:120:in `inspect'
from /Users/iggy/.rvm/gems/ruby-2.2.2/gems/railties-4.2.5/lib/rails/commands/console.rb:110:in `start'
from /Users/iggy/.rvm/gems/ruby-2.2.2/gems/railties-4.2.5/lib/rails/commands/console.rb:9:in `start'
from /Users/iggy/.rvm/gems/ruby-2.2.2/gems/railties-4.2.5/lib/rails/commands/commands_tasks.rb:68:in `console'
from /Users/iggy/.rvm/gems/ruby-2.2.2/gems/railties-4.2.5/lib/rails/commands/commands_tasks.rb:39:in `run_command!'
from /Users/iggy/.rvm/gems/ruby-2.2.2/gems/railties-4.2.5/lib/rails/commands.rb:17:in `<top (required)>'
from …Run Code Online (Sandbox Code Playgroud) 简单的问题,但不知怎的,我想不出一个解决方案.如何删除随机整数数组中的单个最小元素?
a = [7, 5, 3, 2, 1, 4]
b = [2, 2, 1, 1, 2]
Run Code Online (Sandbox Code Playgroud)
这就是我提出的:
def remove_it(num)
num.delete(num.sort[0])
end
Run Code Online (Sandbox Code Playgroud)
代码可以使用a,但不能b.它删除这两个 1 "S IN b.我只需要删除一个1.
如何删除数组中的最小数字并保留顺序?
我有包含整数和字符的字符串,我需要提取数组中的所有数字,例如:
str = "achance123for84faramir3toshowhis98quality"
#=> [123, 84, 3, 98] #Desired output
Run Code Online (Sandbox Code Playgroud)
我无法将它们组合在一起.我试过了:
str.split('').select {|el| el.match(/[\d]+.*/)}
#=> ["1", "2", "3", "8", "4", "3", "9", "8"]
str.split('').select {|el| el.match(/[\d]+[\D]+/)}
#=> []
Run Code Online (Sandbox Code Playgroud)
如何维护所有整数的分组并将它们列在数组中?假定它将包含唯一的数字和字符(AZ).没有空格/非单词字符.所有人都会小一些.
(它们不必转换为整数.我只是遇到问题想出正则表达式将它们分组.如果有一个没有正则表达式的解决方案,那也太棒了!)
a = [[5, 6], [6, 5], [7, 4], [1, 0, 0], [9, 9], [6, 8], [8, 6], [1, 8, 0], [9, 0]]
Run Code Online (Sandbox Code Playgroud)
如何对内部数组中的整数求和并返回内部数组之和的数组?
我需要它返回[(5+6), (6+5), (7+4), (1+0+0), ...],从而[11, 11, 11, 1, 18, 14, 14, 9, 9]
如何在Ruby中调用"多重递归函数",将函数作为一个参数一遍又一遍?
由此,我不是指通常的递归函数,如斐波那契序列.假设我有一个叫做的函数hey().它"Hey"在函数内调用函数时打印字符串的次数.澄清:
hey() #=> "Hey "
hey(hey()) #=> "Hey Hey "
hey(hey(hey())) #=> "Hey Hey Hey "
Run Code Online (Sandbox Code Playgroud)
我试过了
def hey(*args)
"Hey "
end
def hey(*args)
"Hey " + hey(*args)
end
def hey(n)
"Hey " + hey(n)
end
Run Code Online (Sandbox Code Playgroud)
我以前从未见过这样的例子.我知道这是可行的,但不知道如何.是*args需要吗?我需要传递常规参数而不是*args吗?
我在Rails应用程序中使用Active模型序列化程序,我想重构显示内容:
每当我访问http:// localhost:3000 / api / users / 1时,我都会看到:
{"data":{"id":"1","type":"users","attributes":{"username":"Iggy1"},"relationships":{"items":{"data":[{"id":"1","type":"items"},{"id":"7","type":"items"}]},"lists":{"data":[{"id":"1","type":"lists"},{"id":"8","type":"lists"},{"id":"14","type":"lists"},{"id":"15","type":"lists"},{"id":"17","type":"lists"}]}}}}
Run Code Online (Sandbox Code Playgroud)
我如何使其看起来像:
{
"data": {
"id": "1",
"type": "users",
"attributes": {
"username": "Iggy1"
},
"relationships": {
"items": {
"data": [{
"id": "1",
"type": "items"
}, {
"id": "7",
"type": "items"
}]
},
"lists": {
"data": [{
"id": "1",
"type": "lists"
}, {
"id": "8",
"type": "lists"
}, {
"id": "14",
"type": "lists"
}, {
"id": "15",
"type": "lists"
}, {
"id": "17",
"type": "lists"
}]
}
}
}
} …Run Code Online (Sandbox Code Playgroud) 我试图将给定的字符串转换为散列,每个字符串的字符= key和index = value.
例如,如果我有str = "hello",我希望它转变为{"h"=>0, "e"=>1, "l"=>2, "l"=>3, "o"=>4}.
我创建了一个方法:
def map_indices(arr)
arr.map.with_index {|el, index| [el, index]}.to_h
end
#=> map_indices('hello'.split(''))
#=> {"h"=>0, "e"=>1, "l"=>3, "o"=>4}
Run Code Online (Sandbox Code Playgroud)
问题是它跳过了第一个l.如果我颠倒了el和index: 的顺序arr.map.with_index {|el, index| [index, el]}.to_h,我会把所有字母拼写出来:{0=>"h", 1=>"e", 2=>"l", 3=>"l", 4=>"o"}
但是当我invert这样做时,我会得到同样的哈希,跳过其中一个l.
map_indices('hello'.split('')).invert
#=> {"h"=>0, "e"=>1, "l"=>3, "o"=>4}
Run Code Online (Sandbox Code Playgroud)
为什么这样表现如此?我怎么才能打印出来{"h"=>0, "e"=>1, "l"=>2, "l"=>3, "o"=>4}?
div当我点击另一个时,我有一个想要动画的动画div.我知道这可以通过jQuery轻松完成,但不知怎的,我无法让它工作.
我曾尝试SO建议在这里添加
$('#button').onClick(function(){
$('#target_element').addClass('.animate_class_name');});
Run Code Online (Sandbox Code Playgroud)
但什么都没发生.
这是小提琴https://jsfiddle.net/rdfbcq3j/2/.目标是在click_me推动时将红色圆圈div对象设置为矩形.最好的方法是什么?
我在找到在JS中完成此操作的正确方法时遇到问题.我想迭代字符串的每个字符(假设所有较低的字符串),同时i只删除字符.
所以,如果我有字符串abc,我将迭代它三次,它将打印:
'bc' //0th element is removed
'ac' //1st element is removed
'ab' //2nd element is removed
Run Code Online (Sandbox Code Playgroud)
我以为我可以用它replace,但它不适用于具有多个相同字符的字符串.
像这样的东西:
str = 'batman';
for(var i = 0; i < str.length; i++){
var minusOneStr = str.replace(str[i], '');
console.log(minusOneStr);
}
"atman"
"btman"
"baman"
"batan"
"btman" //need it to be batmn
"batma"
Run Code Online (Sandbox Code Playgroud)
我意识到这并没有工作,因为str.replace(str[i], '');当str[i]是a,它将替换的第一个实例a.它永远不会取代第二个a在batman.我查了一下substring,splice,slice方法,但都不适合MF的目的.
我怎么能做到这一点?
我正在阅读createyourlang书籍,并看到了一个如下所示的代码片段:
tokenizer = if identifier = chunk[IDENTIFIER, 1]
IdentifierTokenizer.new(identifier, tokenizer).tokenize
elsif constant = chunk[CONSTANT, 1]
ConstantTokenizer.new(constant, tokenizer).tokenize
elsif number = chunk[NUMBER, 1]
...
Run Code Online (Sandbox Code Playgroud)
我觉得在同一条线上有两个相同的标志令人困惑.有什么意义A = if B = C?
如果你想知道什么是块,假设chunk是字符串"hello"并且chunk[IDENTIFIER,1]等于,"hello"而另一个chunk[OTHER_CONST,1]等于nil.该功能有效.您可以在此处找到源代码仓库.我主要是好奇如何阅读这个函数/如果有更好的方法来重写这段代码以使其更具可读性?
我有一个代码
def pitch_class(note)
note_hash = {:C=>0, :D=>2, :E=>4, :F=>5, :G=>7, :A=>9, :B=>11}
note_hash[:note]
end
Run Code Online (Sandbox Code Playgroud)
但每当我尝试调用其中的值时,返回nil.
pitch_class("C")
#=> nil
Run Code Online (Sandbox Code Playgroud)
如何使用键作为参数调用值?谢谢!