0

私は2つのエンティティを持っており、次のようPostsComments関連付けられています

class Post < ActiveRecord::Base
  attr_accessible :title, :msg
  has_many :comments
end

class Comment < ActiveRecord::Base
  attr_accessible :msg
  belongs_to :post
  scope :search, lambda { |msg| where(arel_table[:msg].matches('%#{msg}%'))}
end

scope :searchはを検索するだけですが、で検索するcomments(msg)別のスコープを記述したいと思います。posts(msg)comments

これを書く方法は?

4

1 に答える 1

0

次のことを試してください(ラムダを使用したスコープよりもクラスメソッドの方が見栄えがよく、読みやすいため)

# comment.rb

def self.search(msg)
  where(arel_table[:msg].matches('%#{msg}%'))
end

def self.post_search(msg)
  joins(:post).where(Post.arel_table[:msg].matches("%#{msg}%"))
end
于 2013-02-06T09:18:17.180 に答える