包装ActiveRecord访问器的推荐方法是什么?
给出类似
的内容class Post < ActiveRecord::Base
has_many :comments
end
class Comment < ActiveRecord::Base
belongs_to :post
end
我希望能够证明,例如,@post.comments
会返回随机排序的评论。
当然我可以创建另一种方法,比如random_comments
,但我想知道是否存在更少错误的方法(我不想记得调用random_comments
方法)。
调用super
不起作用,因为comments
类在Post
类上反射创建而不是继承。
那你怎么做呢?
答案 0 :(得分:1)
您可以定义默认顺序,例如
has_many :comments, :order => "RAND()"
RAND()仅在数据库引擎支持时才有效(Mysql支持)
答案 1 :(得分:0)
希望这会有所帮助..
class Post < ActiveRecord::Base
has_many :comments
def comments_with_randomness
comments_without_randomness.shuffle
end
alias_method_chain :comments, :randomness
end
现在,调用@post.comments
应该以随机顺序返回注释。但是,请记住,它将是一个数组而不是一个活跃的关系。