Как правильно получить данные из двух таблиц (моделей)?

Есть две таблицы проекты и категории. Реализована связь один-к-одному (один проект - для него одна категория).
При создании категории для проекта, в таблицу проектов, записывается id категории.

Как вывести проекты отнесенные к конкретной категории?
У меня возникла проблема в том что при url ../:project_url/:category_url в параметрах следующее
{"project_url"=>"foo", "category_url"=>"bar"} поскольку использую gem 'friendly_id'

Сейчас у меня так
@projects = Project.joins(:category).where('id' => 1)


routes.rb
get ':project_url/:category_url', to: 'pr#category'


Метод создания категорий
def create
  @category = @project.categories.build(category_params)
  if @category.save
    redirect_to ...
  end
end


Дополнительные ресурсы

class CreateProjects < ActiveRecord::Migration
  def change
    create_table :projects do |t|
      t.string :project_url
      t.integer :category_id
      t.text :content
    end
  end
end


class CreateCategories < ActiveRecord::Migration
  def change
    create_table :categories do |t|
      t.string :category_url
      t.string :title
    end
  end
end


class Project < ActiveRecord::Base
  belongs_to :category
end


class Category < ActiveRecord::Base

end
  • Вопрос задан
  • 252 просмотра
Пригласить эксперта
Ответы на вопрос 1
@thepry
Ruby on rails, 1С разработчик
Как вывести проекты отнесенные к конкретной категории?

Если у вас в одной категории может быть несколько проектов, то это связь one-to-many.

1. Вам нужно добавить has_one :project, или has_many :projects в класс Category.
2. Код будет @category.projects

А вообще, у вас не очень правильная связь. По коду, категория подчинена проекту - она создается после и в url стоит после проекта, поэтому правильнее было бы, чтобы категория былаbelongs_to.
Ну и решить, у вас внутри категории есть проект/проекты, или внутри проекта есть категория/категории.
Ответ написан
Ваш ответ на вопрос

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

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