ruby-on-rails - 创建同时具有 own_to 和 validates_presence_of 验证的对象的正确方法是什么?

标签 ruby-on-rails activerecord belongs-to

我想创建一个对象,它既验证父对象的存在,又验证父对象的有效性。但是我想独立于父对象创建它,但我不知道如何这样做。

这是我的代码:

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

这似乎不必要地困惑 - 有更好的方法吗?

最佳答案

您也许应该在问题模型中使用 validates_the_presence_of :user_id 而不是 validates_presence_of :user

希望对您有所帮助。

关于ruby-on-rails - 创建同时具有 own_to 和 validates_presence_of 验证的对象的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4814627/

相关文章:

ruby-on-rails - 使用 ARel 整理查询

ruby-on-rails - 查找与 current_user 在同一组中的用户关联的所有记录

ruby-on-rails - Rails 中的嵌套关​​联/连接

ruby-on-rails - ruby-on-rails 创建具有多个belongs_to和attr_accessible的模型

ruby-on-rails - 在 belongs_to ActiveRecord 关联上使用 through 选项

ruby-on-rails - 如何清除Rails session 表

ruby-on-rails - 出现 "First argument in form cannot contain nil or be empty"错误

mysql - 从表中过滤掉过时的项目

ruby - 来自 created_at 的不同天数的 ActiveRecord 计数?

ruby-on-rails-4 - 尽管在我的模型中包含 ":autosave => true",但 Rails 并未保存我的关联