所以,我刚刚开始学习Ruby,我在我的类中包含了一个to_s方法,这样我就可以简单地将Object传递给puts方法,让它返回的不仅仅是Object ID.我犯了一个错误并将其定义为:
def to_s
puts "I'm #{@name} with a health of #{@health}."
end
Run Code Online (Sandbox Code Playgroud)
代替:
def to_s
"I'm #{@name} with a health of #{@health}."
end
Run Code Online (Sandbox Code Playgroud)
所以,当我在使用第一个代码块时执行此操作:
player1 = Player.new("larry")
puts player1
Run Code Online (Sandbox Code Playgroud)
当我执行上面两行代码而不仅仅是字符串时,我得到一个对象ID和一个字符串.为什么是这样?我得到这个输出:
I'm Larry with a health of 90.
#<Player:0x007fca1c08b270>
Run Code Online (Sandbox Code Playgroud)
我试图考虑为什么程序的第一个版本不只是打印出字符串到控制台,而是返回对象ID和字符串.我认为当我将对象传递给puts时,所发生的一切就是puts转向并调用to_s方法来获取玩家的字符串表示.对?
我在构建 API 端点之前正在阅读这篇文章。我读到了关于复合文档的引用:
为了减少 HTTP 请求的数量,服务器可以允许包含相关资源以及所请求的主要资源的响应。此类回复称为“复合文档”。
以下是使用 JSON API 规范的 JSON 响应示例:
{
"data": [{
"type": "articles",
"id": "1",
"attributes": {
"title": "JSON API paints my bikeshed!"
},
"links": {
"self": "http://example.com/articles/1"
},
"relationships": {
"author": {
"links": {
"self": "http://example.com/articles/1/relationships/author",
"related": "http://example.com/articles/1/author"
},
"data": { "type": "people", "id": "9" }
},
"comments": {
"links": {
"self": "http://example.com/articles/1/relationships/comments",
"related": "http://example.com/articles/1/comments"
},
"data": [
{ "type": "comments", "id": "5" },
{ "type": "comments", "id": "12" }
]
}
} …Run Code Online (Sandbox Code Playgroud) 在 Rails 中(特别是在 ActiveAdmin 中),带有作为第二个参数传递的数组的 link_to 帮助器会做什么?这方面的文档在哪里?
我有这个代码:
index pagination_total: false do
column :name, :sortable => :first_name do |user|
link_to user.full_name, [:admin, user]
end
那有什么作用?[:admin, user] 在这里做什么?
这里一件令人困惑的事情是我的 ActiveAdmin 面板定义为:
ActiveAdmin.register Promotions::User, as: "User" do
因此,链接实际上是在模块前面加上的,如下所示:
admin_promotions_users_path这是我不想要的。这会导致错误,因为它as:会覆盖 ActiveAdmin path_helper。我想要的是:
admin_users_path。
简而言之,我认为这里的错误是,link_helper当传递带有符号对象的数组时,我不知道 a 扩展为什么。
我看到这条路线:
match "*a", to: 'application#some_error_handler', via: :all
这在 Rails 中起什么作用?这是一个“a”吗?
我看到一个在Rails中同时具有db级和代码级验证的表.
CREATE UNIQUE INDEX some_index_name ON joined_table_name USING btree (user_id, restriction_id);
Run Code Online (Sandbox Code Playgroud)
和代码级别:
class SomeJoinTable
validates_uniqueness_of :restriction_id, :scope => :user_id
end
Run Code Online (Sandbox Code Playgroud)
两者兼有的好处是什么?
除了最后一部分,有关JWT的这篇文章非常清晰。
我了解的部分:1.编码与加密有所不同。2.令牌的组成部分(标头base64编码,有效载荷base64编码,签名,标头+有效负载使用公钥和指定的算法加密)
但是我不了解第5部分中如何处理令牌验证。我也不了解为什么报头和有效负载需要进行Base64编码。鉴于它既不安全也不加密...编码的一部分是什么?
***** 编辑 ****
我的理解是否正确,因为JWT包含编码的标头和有效负载...应用服务器可以仅使用其秘密密钥(也许是非对称加密机制中的公共密钥)来加密所包含的有效载荷和标头,以及是否到达包含相同的JWT签名...,那么应用程序服务器知道数据未被篡改,并且用户确实已通过身份验证服务器进行身份验证。这是正确的吗?
如果签名不匹配。这意味着什么?
这有什么区别:
(function() {
var Person = {
sayHello: function() {
alert('Hello World');
}
}
Person.sayHello();
})();
Run Code Online (Sandbox Code Playgroud)
还有这个:
var Person = {
sayHello: function() {
alert('Hello World');
}
}
Person.sayHello();
Run Code Online (Sandbox Code Playgroud)
除了后者创建一个公共函数,前者是一种创建一种私有函数的方法(你不能在括号外引用Person ...有什么区别?
我有一个问题,其中class_name似乎适用于类似的东西
User.first.class.class_name 在当地,但它似乎在生产中失败.
我试图找出class_name的定义位置(我正在使用它Admin::User.first.name.class_name返回类似的东西,"User"因为我想要去模块化的类名.)为什么它不能用于生产?
我在哪里可以看到class_name属于哪个模块?
我遇到&method了代码库,我不知道发生了什么.这发生在irb:
[12,3].map(&method(:to_s))
#=> ArgumentError: wrong number of arguments (given 1, expected 0)
["12","3"].map(&method(:Integer))
#=> [12, 3]
Run Code Online (Sandbox Code Playgroud)
这里发生了什么?
我熟悉并且等于to_proc,但我仍然无法在这里连接点.
instance_eval当它通过绑定时会做什么?我对这段代码感到困惑:
require 'erb'
require 'ostruct'
namespace = OpenStruct.new(name: 'Joan', last: 'Maragall')
template = 'Name: <%= name %> <%= last %>'
result = ERB.new(template).result(namespace.instance_eval { binding })
Run Code Online (Sandbox Code Playgroud)
我从文档中读到instance_eval:z
在接收器 (obj) 的上下文中评估包含 Ruby 源代码或给定块的字符串。为了设置上下文,在代码执行时将变量 self 设置为 obj,使代码可以访问 obj 的实例变量。
所以binding在接收者的上下文中运行,即OpenStruct. 但是模板是如何获得name和的last呢?我感觉我少了一步。
也就是说,我很困惑为什么会发生这种情况:
result = ERB.new(template).result(namespace)
TypeError: wrong argument type OpenStruct (expected binding)
Run Code Online (Sandbox Code Playgroud) ruby ×3
activeadmin ×1
class ×1
javascript ×1
json ×1
json-api ×1
jwt ×1
unique-index ×1
validation ×1