Найти на has_many: через - PullRequest
       3

Найти на has_many: через

0 голосов
/ 03 февраля 2012

У меня есть 3 модели: пользователи, клиенты, проблемы.Ниже приведен код для этих моделей

Модель клиента:

class Customer < ActiveRecord::Base
  belongs_to :se
  belongs_to :user
  has_many :issues
end

Модель проблем:

class Issue < ActiveRecord::Base
  belongs_to :customer
end

Модель пользователя:

class User < ActiveRecord::Base
  has_many :ses
  has_many :customers
  has_many :issues, :through => :customers

  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable

  attr_accessible :email, :password, :password_confirmation, :remember_me, :first_name,     :last_name, :cell_ph, :area


end

Iхотел бы отображать только проблемы, которые принадлежат конкретному пользователю.У меня проблемы с выполнением этой работы.Может кто-нибудь подсказать, как я мог бы создать метод индекса, который бы достиг этого?

Вот мой метод индекса, где я пытаюсь использовать метод dev_veser devise для идентификации пользователя, который вошел в представление:

  def index
    @issues = Issue.where(:user == :current_user)

    respond_to do |format|
      format.html # index.html.erb
      format.xml  { render :xml => @issues }
    end
  end

Ответы [ 2 ]

1 голос
/ 03 февраля 2012

В дополнение к ответу Родриго у вас есть неправильный синтаксис в этой строке:

@issues = Issue.where(:user == :current_user)

Это никогда не даст никаких результатов, потому что :user == :current_user выполняет сравнение двух различных объектов Ruby Symbol. Это всегда возвращает false, поэтому ваше утверждение по существу равно Issue.where(false).

Это ближе к тому, что вам нужно:

@issues = Issue.where(:user => current_user)

Это по-прежнему не решает вашу проблему (Issue не имеет много User с), но по крайней мере значение является правильным.

1 голос
/ 03 февраля 2012

Вы не можете делать то, что делаете, потому что в проблеме нет пользователя.

Согласно руководствам Rails (второй пример в сеансе http://guides.rubyonrails.org/association_basics.html#the-has_many-through-association), вы можете вкладывать has_many, используя has_many :through.

Так что вы должны быть в состоянии сделать это:

current_user.issues

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...