小编klo*_*ner的帖子

在Rails中创建大规模HABTM关联的最快方法是什么?

我有两个表,在Rails中有HABTM关系.类似于以下内容:

class Foo < ActiveRecord::Base
  has_and_belongs_to_many :bars
end

class Bar < ActiveRecord::Base
  has_and_belongs_to_many :foos
end

现在我有了一个新Foo对象,并希望为它预先加载数千个条形码,我预先加载了它:

@foo = Foo.create
@bars = Bar.find_all_by_some_attribute(:a)

最快的方法是什么?我试过了:

@foo.bars = @bars
@foo.bars << @bars
Run Code Online (Sandbox Code Playgroud)

两者都运行得很慢,每个条目都有以下条目bar:

bars_foos列(1.1ms)从bars_foos SQL 显示字段(0.6ms)INSERT INTO bars_foos(bar_id, foo_id)VALUES(100,117200)

我查看了ar-extensions,但是import如果没有模型(Model.import),该函数似乎无法工作,因为它不能用于连接表.

我需要编写SQL,还是Rails有更漂亮的方式?

activerecord ruby-on-rails has-and-belongs-to-many

14
推荐指数
2
解决办法
3946
查看次数

Delayed_Job:访问作业元数据和/或避免重复作业

我正在尝试在自定义作业类中获取run_at日期时间.我的代码看起来像这样:

class MyCustomJob < Struct.new(:my_object)

  def perform
    if self.run_at == my_object.start_time
      # process the job
    end
  end

end
Run Code Online (Sandbox Code Playgroud)

我也试过Delayed::Job.find(self)但没有运气.

提前致谢

ruby-on-rails delayed-job ruby-on-rails-3

9
推荐指数
2
解决办法
4728
查看次数

Ruby中是否存在与String.scan等效的Perl?

我想在Perl中这样做:

>> "foo bar baz".scan /(\w+)/
=> [["foo"], ["bar"], ["baz"]]
Run Code Online (Sandbox Code Playgroud)

有什么建议?

regex perl

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

什么是Perl相当于Ruby"foo".hash?

Ruby String上的哈希方法根据字符串的长度和内容返回一个数字:

>> "foo".hash
=> 876516207
Run Code Online (Sandbox Code Playgroud)

Perl中的等价物是什么?

ruby perl hashcode

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

你如何将自己传递给ruby中的class_eval?

我正在进行元编程任务,我正在尝试使用单个方法在调用类中定义多态关联,同时还定义目标类中的关联.我需要传入调用类的名称才能使关联正确.这是一个应该得到这个想法的片段:


class SomeClass < ActiveRecord::Base
    has_many :join_models, :dependent=>:destroy
end

class JoinModel < ActiveRecord::Base
  belongs_to :some_class
  belongs_to :entity, :polymorphic=>true
end

module Foo
 module ClassMethods
   def acts_as_entity
      has_many :join_models,  :as=>:entity, :dependent=>:destroy
      has_many :some_classes,  :through=>:join_models

      klass = self.name.tableize
      SomeClass.class_eval "has_many :#{klass}, :through=>:join_models"
   end
  end
end

Run Code Online (Sandbox Code Playgroud)

我想删除该klass=行,但不知道如何self将调用类的引用传递给class_eval.

有什么建议?

ruby metaprogramming ruby-on-rails

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

Ruby程序/问题

给定一串字符作为输入,不使用正则表达式或模式匹配,如何获取输出,如果字符匹配aaa应输出1,如果字符匹配aBa应输出2.(注意:不应该重新处理字符所以在处理相同的输入时输出"1"和"2")

例如:

给'aaBaBaaaBaaa'它应该输出211

给'aaaBaBaaaaBBaBaBa'它应该输出1212

提前致谢.

ruby

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