【发布时间】:2014-02-13 21:06:17
【问题描述】:
我正在使用Devise 并尝试在我的RegistrationsController 中构建嵌套模型。
虽然这不起作用。我可以通过
构建嵌套模型resource.build_nested_model
在视图中,但不在控制器本身中。
这是我的registrationscontrollers 的新动作
def new
super
resource.build_user_info
resource.user_info.languageskills.build
if params[:is_driver].to_i == 1
resource.build_driver
end
Rails.logger.debug(resource.build_user_info.inspect)
end
这是它生成的输出:
Started GET "/en/sign_up?is_driver=1" for 127.0.0.1 at 2014-02-13 13:20:01 +0100
Processing by RegistrationsController#new as JS
Parameters: {"is_driver"=>"1", "locale"=>"en"}
Rendered registrations/_new_user_fields.html.erb (12.1ms)
Rendered registrations/new.html.erb within layouts/application (27.8ms)
Rendered layouts/_header.html.erb (2.8ms)
Rendered layouts/_messages.html.erb (0.2ms)
Rendered layouts/_footer.html.erb (0.6ms)
(0.2ms) begin transaction
(0.1ms) commit transaction
#<UserInfo id: nil, user_id: nil, first_name: nil, last_name: nil, year_of_birth: nil, city: nil, created_at: nil, updated_at: nil, gender_id: nil, interests: nil, about: nil, country_alpha2: nil>
Completed 200 OK in 117ms (Views: 96.5ms | ActiveRecord: 0.4ms)
为什么不可能?当我构建相关模型时,我猜想设计并没有保存我对资源的更改。我看到的唯一出路是定义我自己的变量来保存更新资源的完整副本。不过,这不是一个好习惯。
你会怎么做?
【问题讨论】:
标签: ruby-on-rails devise controller