Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在Rails中,在创建和使用验证之前,如何保持_Ruby On Rails_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 在Rails中,在创建和使用验证之前,如何保持

Ruby on rails 在Rails中,在创建和使用验证之前,如何保持,ruby-on-rails,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 4,我的代码如下: validates :user, presence: true before_create :set_user def set_user self.user = current_user end 我知道before_create不起作用,但我需要before_create获取用户数据。您只能在需要的操作上使用before_action助手 before_action :set_user, only: :create 可以使用数组对更多操作执行此操作,也可以使用exc

我的代码如下:

validates :user, presence: true
before_create :set_user   
def set_user
  self.user = current_user
end

我知道before_create不起作用,但我需要before_create获取用户数据。

您只能在需要的操作上使用before_action助手

before_action :set_user, only: :create
可以使用数组对更多操作执行此操作,也可以使用except::some_阶段排除阶段

您可以在验证之前完成,但老实说,我认为这也是错误的解决方案

我会通过协会创造一切

class User
  has_one :foo
  has_many :bars
end
在控制器中

对于has_one:

对于许多人来说:


我猜代码在模型中,而不是在控制器中,他的问题是在调用回调之前启动验证。我的用户数据可能为零,我只想记录真实的用户数据,所以我需要验证。它需要在create中,而不是在new中真正的帮助。@Swards应该在两个中都有。我只会将它放在create中。它应该在控制器中设置,就像您所做的那样。你为什么要把它放在新的呢?嗯,我可能会考虑做一个之前的行动,我只是在上面举例说明,使用它通过协会是的-没有理由把它放在新的。除非你想把它放在表单中,但是我们想在控制器中设置的列。
def new
  @foo = current_user.build_foo
end   
def new
  @bar = current_user.bars.new
end