小编Ser*_*sev的帖子

我以为ruby是同步语言..但为什么呢?

我有我的rails应用程序并试图通过添加一个名为cancancan的gem制作的方法来添加权限.所以下面有两种方法.

 def find_review
   @review = Review.find(params[:id])
 end

 def authorize_user!
   unless can? :manage, @review
     redirect_to product_path(@review.product)
   end
 end
Run Code Online (Sandbox Code Playgroud)

有两种情况.案例1:调用destroy内部的方法动作

def destroy
  find_review
  authorize!
  @product = @review.product
  @reviews = @product.reviews
  @review.destroy
end
Run Code Online (Sandbox Code Playgroud)

和案例2:使用before_action方法调用方法

before_action :find_review, :authorize!, only: [:destroy]

def destroy
  @product = @review.product
  @reviews = @product.reviews
  @review.destroy
  redirect_to product_path(@product), notice: 'Review is deleted'
end
Run Code Online (Sandbox Code Playgroud)

我使用before_action(案例2)甚至在调用操作之前重定向未经授权的用户,这样才有意义.我想知道的是在案例1中,为什么授权方法在销毁审核之前不会中断和重定向用户?它实际上重定向,但删除审查后.但我认为红宝石是同步的..

ruby ruby-on-rails

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

使用数组中的值扩展散列数组

我有这个数组

types = ['first', 'second', 'third']
Run Code Online (Sandbox Code Playgroud)

和这个哈希数组

data = [{query: "A"}, {query: "B"}, {query:"C", type: 'first'}]
Run Code Online (Sandbox Code Playgroud)

现在我必须“扩展”每个类型的每个数据哈希(如果不存在)。散列的所有现有键也必须复制(例如:查询)。所以最后的结果一定是:

results = [
  {query: "A", type: 'first'}, {query: "A", type: "second"}, {query: "A", type: "third"},
  {query: "B", type: 'first'}, {query: "B", type: "second"}, {query: "D", type: "third"},
  {query: "C", type: 'first'}, {query: "C", type: "second"}, {query: "C", type: "third"}
]
Run Code Online (Sandbox Code Playgroud)

数据数组对于性能问题来说非常大。

ruby

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

如何处理我正在排序的数组中的nil元素?

我正在调用sort这样的数组:

new_list = my_array.sort
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

NoMethodError: undefined method `<=>' for nil:NilClass
Run Code Online (Sandbox Code Playgroud)

如何处理这种简单排序的无案例?

我最初有一个破坏性排序调用(即sort!)并将其更改为常规sort,但它仍然会抛出此错误.

思考?

ruby

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

如何从第二个散列中的两个散列(如果它们的键匹配)获取键和值

假设我有两个哈希说

hash1 = {1=>"a" , 2=>"b" ,3=>"c" , 4=>"d"}

hash2 = {2=>"whats" ,4 =>"up" ,5=> "dude"}
Run Code Online (Sandbox Code Playgroud)

我必须创建一个结果哈希,如果它们的键匹配,那么结果哈希必须包含键(这是第一个哈希值)和值(这是值对应的匹配键)

hash3 ={b=>"whats" ,d=>"up"}
Run Code Online (Sandbox Code Playgroud)

ruby

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

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

在学习JQuery之前学习JavaScript?

在2012年,第一次进入JavaScript时,在学习jQuery之前学习JavaScript还是直接进入jQuery更好?

javascript jquery

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

在红宝石中调用"put"的混乱

我们都知道在红宝石中的事实.具有对象的运算符留给.帮助发送消息(右侧.).

根据上述原则 - "100".to_s我们可以说.运算符正在向to_s对象发送消息100.好一个!

那么puts("hello")呢?以下是我对当地红宝石专家的提问:

  1. 在哪里.运营商?

  2. 谁是接收者?

ruby

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

Ruby:用'.'转换字符串.符号

我有这个字符串:'industry.in'我想将其转换为:industry.in.当我这样做时'industry.in'.to_sym,结果是::"industry.in".

任何人都知道如何进入::industry.in相反?

我这样做,所以我可以在Mongoid中为数组字段进行条件查询:

criteria = 'industry.in'.to_sym    
Company.where(criteria => ['Information Technology'])
Run Code Online (Sandbox Code Playgroud)

ruby mongoid

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

我编码如下,为什么它没有编译为“我的名字是玛丽亚,我的年龄是11。” 请?谢谢 ;)

name = "Maria"
age = 11

print(type(name), type(age))
print("my name is 'name', my age is 'age'.")
Run Code Online (Sandbox Code Playgroud)
<class 'str'> <class 'int'>
my name is 'name', my age is 'age'.
Run Code Online (Sandbox Code Playgroud)

python

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

请帮我找bug

这两个图像的说明 图片1 图片2

代码

showUserProfile: (user_data)->
    console.log "Routers.AppRouter showUserProfile()", user_data
    window.user_profile = user_data

    playlists_both_people = user_profile['playlists']

    my_profile['playlists'].forEach (pl)-> playlists_both_people.push(pl)

    @playlists = new Playlists.Collections.PlaylistsCollection( playlists_both_people )

    $("#app").html( new Playlists.Views.User.ShowView(user_data).render().el )
    @ok()
Run Code Online (Sandbox Code Playgroud)

javascript coffeescript backbone.js

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

如何删除前面的空格以及字符串的结尾

如何去除前面和字符串末尾的空格.

例如"你好"或"你好"就会像这样剥离"你好"

string ruby-on-rails

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

关于JavaScript中的for循环

我是JavaScript新手,遇到了关于for循环的基本问题:

var vacationSpots = ["Tokyo", "London", "New York"];

for (var i = vacationSpots.length; i >= 0; i--) {
  console.log("I would like to visit " + vacationSpots[i]);
}
Run Code Online (Sandbox Code Playgroud)

我想知道为什么我们需要停止条件i >= 0而不是i = 0.我尝试过,i = 0但只有错误显示.你能告诉我之间的差异i >=0i = 0?我想i = 0,代码将在阵列中位于0的东京停止.

javascript

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