【发布时间】:2013-11-08 22:19:10
【问题描述】:
我有两种我正在使用的表格。一种用于注册,使用devise进行身份验证,第二种用于添加用户cmet。我注意到,当我完成注册过程时,我为名字和姓氏添加的字段在数据库中最终为零。我找到了解决问题的解决方案:
before_filter :configure_devise_params, if: :devise_controller?
def configure_devise_params
devise_parameter_sanitizer.for(:sign_up) do |u|
u.permit(:first_name, :last_name, :profile_name, :email, :password, :password_confirmation)
end
end
但是在我的第二种形式中,我在表中添加了一个 user_id 列并将其放入 attr_accessible 中。但是,它显示为 nil。我对 Rails 很陌生,我不确定这是否是类似于第一种形式的问题,还是完全不同的问题。
我在网上找到的所有其他解决方案似乎都指向 attr_accessible,但我认为我在那里很好。所以它必须是别的东西。我还应该在哪里解决这个问题?有其他人经历过吗?
编辑:
第二种形式用于用户 cmets。它看起来像这样:
<%= simple_form_for(@status, html: {class:"form-horizontal"}) do |f| %>
<%= f.input :user_id %>
<%= f.input :content %>
<div class="form-actions">
<%= f.button :submit %>
</div>
<% end %>
正在保存内容,但 user_id 为 nil。我最初在表中没有 user_id - 我后来在迁移中添加了它:
class AddUserIdToStatuses < ActiveRecord::Migration
def change
add_column :statuses, :user_id, :integer
add_index :statuses, :user_id
remove_column :statuses, :name
end
end
另外,我知道 attr_accessible 是 Rails 3 的一项功能,在 Rails 4 中已被取消。我将 gem 'protected_attributes' 添加到我的 Gemfile 以便我可以使用它,因为我不知道约定是什么对于 Rails 4。我最好摆脱这个吗?如果是这样,我应该做些什么来保护某些输入?
【问题讨论】:
标签: ruby-on-rails ruby forms devise ruby-on-rails-4