Я пытаюсь сделать приложение в рельсах 4.Rails 4 - Ассоциация и Скоупс
У меня есть модели под названием Organisation
, Profile
и Project
.
Ассоциации являются:
Organisation has_many :profiles
Profile belongs_to :organisation
Profile has_many :projects, dependent: :destroy
Projects belongs_to :profile
В моей шоу-странице организации, я хочу показать проекты, которые принадлежат к профилям где эти профили принадлежат организациям.
Как я могу это достичь?
Это основная структура, которую я пытаюсь адаптировать для организации ссылок для проецирования через профиль.
<% Organisation.find(params[:id]).projects.order('created_at DESC').in_groups_of(3) do |group| %>
<div id="portfolioFiltering" class="masonry-wrapper row">
<% group.compact.each do |project| %>
Я не понимаю, как использовать области, но я попытался сделать в моей модели проекта, как:
scope :by_organisation, ->(profile.organisation_id) { where(profile_id: profile.organisation_id) }
Я не уверен, если я нахожусь на правильном пути. Я попытался сделать еще один в моих организациях моделей как:
scope :relevant_projects, ->(organisation_id) { where(organisation_id: project.profile.organisation_id) }
<% Organisation.relevant_projects.find(params[:id]).projects.order('created_at DESC').in_groups_of(3) do |group| %>
<div id="portfolioFiltering" class="masonry-wrapper row">
<% group.compact.each do |project| %>
Когда я пытаюсь это, я получаю сообщение об ошибке, которое говорит:
wrong number of arguments (given 0, expected 1)
Я не знаю, что это значит. Какая часть области является аргументом?
Может ли кто-нибудь увидеть, что я делаю неправильно?
UPDATE
Я попытался добавить ассоциации, как:
Организация:
has_many :projects, through: :profiles
Проект:
belongs_to :organisation, through: :profile
Затем я обновляю показать страницу в папке организации, чтобы:
<% Organisation.projects.order('created_at DESC').in_groups_of(3).each do |group| %>
<div id="portfolioFiltering" class="masonry-wrapper row">
<% group.compact.each do |project| %>
Тем не менее, я получаю ошибку говорит:
undefined method `projects' for #<Class:0x007fe1e31988f0>
В области 'соответствующие_проекты' ожидается параметр, который должен быть вашим' organization_id'. – dp7
Пройдя свой вопрос, я думаю, вы должны рассмотреть здесь ассоциацию has_many: via. Как вы можете добавить в модель 'Organisation', например' has_many: projects, через:: profiles'. Вы можете сделать что-то вроде этого, тогда '@ organisation.projects' – dp7
Я пробовал, что имеет много сквозных, но я получаю ошибку undefined method 'projects'. Я скопировал свою попытку выше. Вы видите, где я ошибаюсь? – Mel