Вызов ActiveRecord :: Create () из пользовательской модели rails, не связывающий новый объект с пользователем - PullRequest
0 голосов
/ 17 сентября 2011

В моей пользовательской модели rails я пытаюсь написать метод, который будет возвращать список для текущего периода времени, а при отсутствии списка для этого периода времени создать список, который связан с пользователем, а затем вернуть это:

class User < ActiveRecord::Base

def todaysList
   today = Time.new
   if self.lists.where(:date => today.to_date)
      return self.lists.where(:date => today.to_date).first #Get the object, not the ActiveRecord::Relation
   else
      self.lists.create!(:date => today.to_date) #Make the list, return it!
   end
end

Мой вопрос: почему при вызове self.lists.create! (: Foo => 'bar') ассоциация пользователей не заполняется?

Я решил обойти это более небрежно, явно назначив пользователя при создании! вызов, как таковой:

self.lists.create!( :date => today.to_date, :User_ID = self.id)

однако это решение просто не выглядит правильным.

Заранее спасибо и, как всегда, извиняюсь за глупые, лишние или плохо сформулированные вопросы.

1 Ответ

1 голос
/ 17 сентября 2011

Я бы сделал что-то вроде этого:

def todays_list
  lists.find_or_create_by_date(Date.today)
end

Изменение имени метода - просто предпочтение.

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