使用Ruby on Rails中的模型

时间:2011-12-08 07:03:46

标签: ruby-on-rails-3

  1. 我有一个表(帖子),其中有一个名为'tag'的列我希望能够调用一组特定的标记帖子(体育,艺术和娱乐等),这样当用户点击相应的链接时,他们只收到该类别的帖子。
  2. 以下是我到目前为止尝试实施的内容:(在我的帖子模型中)

    def self.seperate_by_tag
        @tag = find(:all, :tag => ??)
    end
    

    我假设我需要在:tag部分输入某种参数,以便访问一组带有特定标签的帖子,但是,我不知道如何去做。

    1. 我也无法按照发布的顺序显示帖子(我希望他们位于顶部)。

      def self.find_posts
          find(:all, :order => ??) 
      end
      
    2. 非常感谢任何帮助!

1 个答案:

答案 0 :(得分:2)

如果您的tag列只是文字,那么就像这样简单:

class Post < ActiveRecord::Base
  scope :by_tag, lambda {|tag_name| where :tag => tag_name }
end

# Usage:
Post.by_tag('Sports').all # => collection of posts

this Rails Guide中介绍了使用scope


至于您的其他问题,只要您的posts表格有created_at列(随timestamps migration helper提供),那么您可以按逆时间顺序(最新的)排序这样:

Post.order('created_at DESC').all
this guide涵盖

order


P.S。正如您可能从我的代码中收集的那样,SomeModel.find :all, ...语法已被正式弃用。您应该使用SomeModel.allSomeModel.first