嘿伙计们,我想添加一个这样的函数,它将随机记录返回到我的结构中存在的所有活动记录模型。我该怎么做呢?
def self.random
if (c = count) != 0
find(:first, :offset =>rand(c))
end
end
嘿伙计们,我想添加一个这样的函数,它将随机记录返回到我的结构中存在的所有活动记录模型。我该怎么做呢?
def self.random
if (c = count) != 0
find(:first, :offset =>rand(c))
end
end
尽管您可以直接使用 sql,但我将把它留在这里以供将来参考,以便将类方法添加到所有ActiveRecord
对象。
class MyActiveRecordBase < ActiveRecord::Base
def self.random
if (c = count) != 0
find(:first, :offset =>rand(c))
end
end
end
现在确保你想要这个类方法的每个模型都扩展自MyActiveRecordBase
class Model < MyActiveRecordBase
end
class AnotherModel < MyActiveRecordBase
end
在您的 /lib 文件夹中创建一个模块作为 models_methods.rb。
在这个模块中创建一个方法,
def rand(model)
model.order("RANDOM()").first
end
def string_to_url(model)
model.find(2).name.gsub([^A-Za-z0-9],/ /).downcase)
end
将此模块作为“include ModelsMethods”包含在您的所有模型中。该模块可以包含您要跨模型使用的所有方法。