私が使用している2つのフォームがあります。1 つは認証用のデバイスを使用するサインアップ用で、もう 1 つはユーザーのコメントを追加するためのものです。サインアップ プロセスを行ったときに、名前と姓に追加したフィールドがデータベースでゼロになっていることに気付きました。これで問題が解決する解決策を見つけました:
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
しかし、2 番目のフォームでは、user_id 列をテーブルに追加し、attr_accessible に配置しました。ただし、nil として表示されます。私はレールに非常に慣れていないので、これが最初のフォームに似た問題なのか、それともまったく別の問題なのかわかりません。
私がオンラインで見つけた他のすべてのソリューションは attr_accessible を指しているように見えますが、私はそれでいいと思います。だから、それは別のものでなければなりません。これをトラブルシューティングするには、他にどこを見る必要がありますか? 他の誰かがこれを経験しましたか?
編集:
2 番目のフォームは、ユーザーのコメント用です。次のようになります。
<%= 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 で廃止されたことも知っています。Gemfile に gem 'protected_attributes' を追加して、これを使用できるようにしました。Rails 4 の規則が何であるかを知らなかったからです。 . これはやめた方がいいでしょうか? もしそうなら、特定の入力を保護するためにこれの代わりにすべきことはありますか?