2011-12-16 4 views
0

У меня есть 2 модели в моем приложении для рельсов: книга и издания. Книга может иметь много изданий.найти: все - IN состояние

Мне нужно получить все «издания» книг, написанные конкретным автором.

Найти все книги определенного автора

@saved_books = Book.find :all, :conditions => ["aut_fk = ?",@aut.id ] 

@saved_books содержит массив книг, написанных определенным автором.

Мой вопрос: как получить книги, написанные конкретным автором.

@editions = Edition.find(:all, :conditions => [ "book_fk IN (?)", @saved_book.id]) //this code is not correct 

Любое предложение наиболее ценится.

ответ

0

Я использую приведенный ниже код и, кажется, чтобы сделать работу. Надеюсь, что это может быть полезным для кого-то еще

@edition = Edition.find(:all, :conditions => ["book_fk IN (?)", @saved_books.map{|b| b.id}]) 
+0

Хорошо, сделайте бессмысленно, сделав '@ saved_books.id' dind't теперь имеющим смысл, я думаю об этом, так как требуемый метод id - это то, что у каждого элемента массива, а не id метода массива (который я не знаю, существует ли он). – Deleteman

1

Вы пробовали ?:

@edition = Edition.where(:book_fk => @saved_book.id]) 

Редактировать Является ли @ saved_book.id массив? Это не похоже на это. Если @saved_book должен быть @saved_books, то код изменится на:

@edition = Edition.where(:book_fk => @saved_books.map {|b| b.id}]) 

Я думаю ...

+0

Я просто попытался идентификатор, но это не похоже на работу, я получаю «неопределенный метод' идентификатор»для # <Массив: 0x55c0e18>» Да @saved_book является массивом - да, вы правы, я должен был переименовать его в @saved_books – tanya

+0

undefined method 'where 'for # tanya

+0

Какие рельсы и рубиновая версия вы используете? Это может быть важно ... – Deleteman

Смежные вопросы