У меня есть две сущности Posts и Comments, связанные следующим образом

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.

Как написать это?

0
user1094976 6 Фев 2013 в 13:01

1 ответ

Лучший ответ

Попробуйте следующее (я предпочитаю методы класса, чем области с лямбдами, потому что они выглядят чище и их легче читать)

# 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
0
jvnill 6 Фев 2013 в 13:18