小编Chr*_*sen的帖子

通过指定其"id"(而不是通过其父级查找)来销毁嵌入的Mongoid文档

我有这两个模型:

class Presentation
  include Mongoid::Document
  embeds_many :presentation_rows
end

class PresentationRow
  include Mongoid::Document
  embedded_in :presentation
end
Run Code Online (Sandbox Code Playgroud)

在我的presentation_rows_controller.rb中,我有以下几行代码:

def show
  @presentation = Presentation.find(params[:id])
  @presentation_rows = @presentation.presentation_rows
end

def destroy
  ...
  ...
end
Run Code Online (Sandbox Code Playgroud)

在我的presentation_rows/show.html.haml中,我有以下几行代码:

- @presentation_rows.each do |presentation_row|
  = link_to "Delete", presentation_row, method: :delete
Run Code Online (Sandbox Code Playgroud)

我在destroy控制器动作中尝试了很多方法,但它们都指向了一个显而易见的事实,即我试图破坏嵌入式文档而不通过它的父级.但是现在我在我的视图文件中有了它的id的presentation_row,我不应该被允许销毁它.

带有空毁灭动作的错误消息,fyi:

Started DELETE "/en/presentation_rows/516af0a983c336708300000f" for 127.0.0.1 at 2013-04-14 20:08:47 +0200
Processing by PresentationRowsController#destroy as HTML
  Parameters: {"authenticity_token"=>"KHGG2dsTseCl88okOKW9JAlHb+VaK2lKIxb0ptAIC7A=", "locale"=>"en", "id"=>"516af0a983c336708300000f"}
  MOPED: 127.0.0.1:27017 QUERY        database=shop_import_development collection=users selector={"$query"=>{"_id"=>"511a813a83c336a0ea000001"}, "$orderby"=>{:_id=>1}} flags=[:slave_ok] limit=-1 skip=0 fields=nil (0.3152ms)
  MOPED: 127.0.0.1:27017 QUERY        database=shop_import_development collection=presentations selector={"_id"=>"516af0a983c336708300000f"} flags=[:slave_ok] …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails mongoid ruby-on-rails-3

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

通过数组时删除重复

我有不同的哈希包含单位,分组为单位类型.我的代码旨在确定应返回哪个单元类型以进行进一步处理.但是,在检查每个列表时会发生很多重复.第一个if与第一个elsif完全相同.如何以最佳方式干燥代码?

from_unit = "gr"
to_unit = "kg"

WEIGHT = {
"gr" => 1000.0,
"kg" => 1.0,
}

MEASURE = {
"mm" => 1000.0,
"cm" => 100.0,
"m" => 1.0
}

if WEIGHT.has_key?(from_unit) or WEIGHT.has_key?(to_unit)
  if WEIGHT.has_key?(from_unit) && WEIGHT.has_key?(to_unit)
    return WEIGHT
  elsif WEIGHT.has_key?(from_unit)
    raise RuntimeError, "#{to_unit} is not a known unit"
  else
    raise RuntimeError, "#{from_unit} is not a known unit"
  end
elsif MEASURE.has_key?(from_unit) or MEASURE.has_key?(to_unit)
  if MEASURE.has_key?(from_unit) && MEASURE.has_key?(to_unit)
    return WEIGHT
  elsif MEASURE.has_key?(from_unit)
    raise RuntimeError, "#{to_unit} is not a known unit" …
Run Code Online (Sandbox Code Playgroud)

ruby hash

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

使用devise-async发送电子邮件不起作用(Rails/Sidekiq)

我有sidekiq (2.15.2),devise (3.2.0)devise-async (0.9.0)在我的Rails应用程序.

我正试图devise-async接管发送电子邮件.但没有运气.我按照这样的说明:

添加:asyncUser模型:

# models/user.rb
class User
  include Mongoid::Document
  devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable, :confirmable, :async
end
Run Code Online (Sandbox Code Playgroud)

创建初始化程序:

# config/initializers/devise_async.rb
Devise::Async.backend = :sidekiq
Run Code Online (Sandbox Code Playgroud)

我没有在邮件中进行任何自定义修改

# config/initializers/devise_async.rb
Devise.setup do |config|
  config.mailer_sender = "my@email.com"
  # config.mailer = "Devise::Mailer"
end
Run Code Online (Sandbox Code Playgroud)

以下是创建新帐户时在控制台中显示的内容:

Started POST "/da/users" for 127.0.0.1 at 2014-05-29 14:42:07 +0200
Processing by RegistrationsController#create as HTML
  Parameters: {"utf8"=>"?", "authenticity_token"=>"wyIIRqVoYrXqbX/U+3PGyrYI/MIxcH1YErUQ7JWcfUs=", "user"=>{"company"=>"Some Company Ltd.", "email"=>"some@email.com", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"}, …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails redis devise sidekiq devise-async

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

如何正确自动调整wysihtml5 textarea

我正在使用bootstrap-wysihtml5,因此从textarea输入字段接收输入.为了改善用户体验,我想自动调整textarea以适应输入文本.

这个Gist中的代码的帮助下,我可以在单击时调整textarea的大小,但不能在加载时调整大小.

这是我目前的实施:

var container = $("#container");
var textarea = $("<textarea />");
textarea.attr("style", "width: 90%;");

container.append(textarea);

textarea.wysihtml5({
  "font-styles": false,
  "emphasis": false,
  "lists": false,
  "html": false,
  "link": false,
  "image": false,
  "color": false
});

textarea.val("<div>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</div<div><br></div><div>Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur..</div");

textarea.observe("load", function () {     
  var $iframe = $(this.composer.iframe);
  var $body …
Run Code Online (Sandbox Code Playgroud)

javascript jquery autoresize wysihtml5 bootstrap-wysihtml5

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

如何将十六进制字符串转换回它的“ SecureRandom.random_bytes”二进制文件?

在Ruby中,我可以创建一个16字节的二进制文件并将其转换为十六进制字符串:

key     = SecureRandom.random_bytes(16)                    # => "hN\xDB\xAD\xAF\xB3R\xC0`\xB19\x1D\x19.\xD3I"
hex_key = key.each_byte.map { |byte| '%02x' % byte }.join  # => "684edbadafb352c060b1391d192ed349"
Run Code Online (Sandbox Code Playgroud)

在PHP和Javascript中,我可以将十六进制字符串转换回它的16字节二进制文件。

PHP:

<?php
hex2bin("684edbadafb352c060b1391d192ed349");
?>
Run Code Online (Sandbox Code Playgroud)

通过CryptoJS的 Javascript :

CryptoJS.enc.Hex.parse("684edbadafb352c060b1391d192ed349");
Run Code Online (Sandbox Code Playgroud)

但是,如何使用Ruby将十六进制字符串转换回16字节二进制文件呢?

ruby encryption binary hex

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

如何对mongoid文件数组进行排序(数组包含不同的mongoid文档类型)?

我有两个Mongoid文档,FirstType文档和SecondType文档数组.两者都嵌入了User.

user.first_types  =  [#<FirstType _id: 51a10b4883c336ebef0002a8, created_at: 2013-05-25 19:04:40 UTC, updated_at: 2013-05-25 19:04:40 UTC, datetime: 2013-03-28 15:03:22 UTC, text: "Hello 1">]
user.second_types = [#<SecondType _id: 51a6058783c3368a62000003, created_at: 2013-05-29 13:41:27 UTC, updated_at: 2013-05-29 13:41:27 UTC, datetime: 2013-05-29 08:23:27 UTC, text: "Hello 2">]
Run Code Online (Sandbox Code Playgroud)

然后我将它们与这行代码合并:

all_types = user.first_types+user.second_types
Run Code Online (Sandbox Code Playgroud)

我现在希望按属性排序all_types数组datetime(最新的datetime,所以SecondType对象应该是第一个).

我已经尝试过传统的Mongoid和Ruby数组方法,但是当我混合使用Mongoid文档时它们似乎不起作用.有任何想法吗?

ruby arrays sorting mongodb mongoid

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