嘿伙计们我想添加一个这样的函数,它会向我的Structure中存在的所有活动记录模型返回一个随机记录。我该怎么做呢?
def self.random
if (c = count) != 0
find(:first, :offset =>rand(c))
end
end
答案 0 :(得分:1)
答案 1 :(得分:0)
即使你可以使用直接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
答案 2 :(得分:0)
在/ 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”。此模块可以包含您希望跨模型使用的所有方法。