Задать вопрос

Как объединить два activerecord объекта?

К примеру в базе имеем таблицу с комментариями, вытащили из базы несколько связанных с одним постом, вытащили еще несколько связанных с другим постом. Как объединить эти два объекта? Возможно ли это сделать в стиле конкатенации строк?

Опишу более конкретно задачу:
Есть магазин, у которого много адресов, комментарии(отзывы) пишутся к адресам.

@addresses = Address.where(shop_id: @shop.id)

Дальше нужно получить все подтвержденные записи. Пытался делать так:
@addresses.each do |addr|
      @comments = addr.comments.confirmed
end

Но разумеется это срабатывает только для одного последнего адреса. Пробовал

@comments = Comment.new
@addresses.each do |addr|
      @comments = @comments.merge(addr.comments.confirmed)
end


, но
NoMethodError (undefined method `merge' for#<Comment:0x007ff493627ef8>):`


и
NoMethodError (undefined methodmerge' for nil:NilClass)
:`

если @comment = Comment.new

Update

class Comment < ActiveRecord::Base
  belongs_to :address
  scope :with_text, -> { where.not(:text => nil) }
  scope :confirmed, -> { where(:confirmed => true) }
  scope :starred, -> { where.not(:stars => nil) }

  def confirm!
    self.update_attributes(:confirmed => true)
  end
end
  • Вопрос задан
  • 311 просмотров
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
etspring
@etspring
Начитанное быдло
А если так
Address.where(shop_id: @shop.id).joins(:comments).confirmed ?
Ответ написан
Hunt666
@Hunt666 Автор вопроса
в моем случае все оказалось так, как описано здесь
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы