小编ide*_*lum的帖子

在Rails 2.3.2中"触摸"updated_at列

我有一个循环遍历一堆ActiveRecord模型,进行一些处理并再次保存模型的过程.但是,通常,处理不会导致属性发生更改,因此updated_at列永远不会更改(即使调用了save).

我不想禁用部分更新(通常,它们很有用).我猜我的两个选择是:

  1. 为模型添加一个单独的时间戳列(即' processed_at')并自行管理,尽管这看起来有点浪费/多余.
  2. 或者以某种方式覆盖updated_at属性的管理?

我听说Rails 3会有一个'触摸'方法,这正是我正在寻找的.

任何想法/选项/意见?

timestamp ruby-on-rails

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

Rails初始化程序在哪里进入gem?

我正在尝试从现有应用程序中提取一些功能到gem中.当Rails启动时,现有功能使用初始化程序加载配置文件...

config/initalizers/myinitializer.rb
Run Code Online (Sandbox Code Playgroud)

这个初始化器应该放在哪里?我是否镜像宝石内部的路径结构或将其放在其他地方?这将是我的第一个宝石.

ruby gem rubygems ruby-on-rails

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

在Ruby中的类级别添加Enumerable mixin

我在我的Rails应用程序中使用postgres模式,因此没有明确的方法来查询所有公司(对于我们自己的分析).我想实现迭代所有公司的每个方法,并适当地切换postgres模式.

我想打电话给:

Company.each do |company|
  # do something in the context of each company
end
Run Code Online (Sandbox Code Playgroud)

但是我也希望获得一些其他的Enumerable方法collect,例如在所有公司中获取所有经理的示例:

Company.collect do |company|
  Users.managers
end
Run Code Online (Sandbox Code Playgroud)

目前我有这个效果很好

class Company < ActiveRecord::Base
  # ...

  def self.each(&block)
    Company.all.each do |company|
      if Schemas.include? company.subdomain
        # this changes to that company's schema so all queries are scoped
        Apartment::Database.switch company.subdomain

        yield company if block_given?
      end
    end
  end
Run Code Online (Sandbox Code Playgroud)

但是如何在类级而不是实例级别获取Enumerable mixin.

也就是说,当include Enumerable在类中时,Enumerable方法被调用为

company = Company.new
# which might iterate over the contents (users?) in a company
company.collect …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails

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

标签 统计

ruby-on-rails ×3

ruby ×2

gem ×1

rubygems ×1

timestamp ×1