Переменные в после создания - PullRequest
0 голосов
/ 23 мая 2011

В настоящее время у меня есть следующее:

class Question < ActiveRecord::Base
  belongs_to :product
  belongs_to :user
  belongs_to :asker, :class => "User", :foreign_key => "asker_id"
  has_one :track, :as => :trackable

  after_create :make_track

  def make_track
    create_track
  end
end

class Product < ActiveRecord::Base
  belongs_to :user
  has_many :questions
  has_one :track, :as => :trackable

  after_create :make_track

  def make_track
    create_track
  end
end

class Track < ActiveRecord::Base
  belongs_to :user
  belongs_to :trackable, :polymorphic => true
end

Что я хочу сделать, это получить треки (Track), которые принадлежат_ пользователю (User), чтобы получить:

u = User.first
t = u.tracks

Я попытался ввести:

  def make_track
    create_track(:user_id => :user)
  end

  def make_track
    create_track(:user_id => :user_id)
  end

, но это не помогает.Как вставить user_id пользователя, который сохранил текущий вопрос / продукт в после создания?

После того, как му слишком короткий ответ ниже.Я получил вывод:

  SQL (0.1ms)   BEGIN
  Question Create (0.2ms)   INSERT INTO `questions` (`votes`, `created_at`, `asker_id`, `product_id`, `updated_at`, `question`) VALUES(0, '2011-05-23 07:55:25', 1, 1, '2011-05-23 07:55:25', 'the eight')
  Track Load (0.4ms)   SELECT * FROM `tracks` WHERE (`tracks`.trackable_id = 13 AND `tracks`.trackable_type = 'Question') LIMIT 1
  Track Columns (1.3ms)   SHOW FIELDS FROM `tracks`
  Track Create (0.3ms)   INSERT INTO `tracks` (`trackable_id`, `created_at`, `trackable_type`, `updated_at`, `user_id`) VALUES(13, '2011-05-23 07:55:25', 'Question', '2011-05-23 07:55:25', NULL)
  SQL (54.6ms)   COMMIT

Я попытался вывести self.user в after_create, что привело к nil.

Ответы [ 2 ]

1 голос
/ 23 мая 2011

Отправленный вами SQL предполагает, что проблема заключается в том, что пользователь не задает вопрос (поэтому при переходе к create_track он равен нулю).

Должен ли Вопрос действительно принадлежать непосредственно Пользователю или он принадлежит Пользователю через Продукт?

1 голос
/ 23 мая 2011

Вы просто вызываете соответствующий метод доступа на self:

def make_track
  create_track(:user_id => self.user)
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...