Как правильно создать объект, который имеет валидацию own_to и validates_presence_of? - PullRequest
2 голосов
/ 27 января 2011

Я хотел бы создать объект, который одновременно проверяет наличие родительского объекта И проверяет достоверность родительского объекта.Однако я хотел бы создать его независимо от родительского объекта, и я не уверен, как это сделать.

Это мой код:

class User
  has_many :questions
end

class Question
  belongs_to :user
  validates_presence_of :user
  validates_associated :user
end

Я знаю, что могусделать это:

u = User.create
q = u.questions.create

но мне нужно сделать это

u = User.create
q = Question.create(:user_id => u.id)

q.valid? 
=> false

q.errors?
=> <OrderedHash {:user=>["can't be blank"]}>

Как правильно решить эту проблему?

Должен ли я использовать

 class User 
 ...
   before(:save) do
     self.user = User.find(self.user_id)
   end

 end

Это кажется излишне грязным - есть ли лучший способ?

Ответы [ 2 ]

3 голосов
/ 31 января 2011

Возможно, вам следует использовать validates_the_presence_of :user_id в модели вопросов вместо validates_presence_of :user.

Я надеюсь, это поможет.

0 голосов
/ 27 января 2011

Вы хотите создать объект через форму? Если это так, я бы предложил использовать метод сборки и acceptpts_nested_attributes - это позволит вам одновременно создавать родительский и дочерний объекты Я обычно ссылаюсь на сообщение Райана , когда хочу это сделать.

...