これは私の最初の Rails プロジェクトです。何らかの理由で、データベースの 1 つの列に投稿できませんが、同じテーブルの他の列は正常に機能します。(同じテーブル内の他の列にデータを入力したときに、Faker gem を使用してその列にデータを入力することもできませんでした。そのため、データベースに移動して手動で入力しただけで、それを通り越すことができました。)
私のデータベースには、列「id」「content」「user_id」「created_at」「updated_at」および「heading」を持つテーブル「articles」があります。新しい記事を作成するための私のフォームは次のようなものです:
<%= form_for @article do |f| %>
<div class="field">
<%= f.text_field :heading, :size => "60x1" %>
</div>
<div class="field">
<%= f.text_area :content, :size => "60x24" %>
</div>
<div class="actions">
<%= f.submit "Submit" %>
</div>
<% end %>
私の article_controller には次のものがあります。
def new
@article = Article.new
end
def create
if @article = current_user.articles.create!(params[:article])
redirect_to root_path, :flash => { :success => "Article created!" }
else
redirect_to "/articles/new"
end
end
フォームを送信しようとすると、見出しの検証 (:presence => true) をキャッチするか、検証をコメントアウトすると見出しなしで送信されます。投稿はこれらのパラメータを送信しています:
{"utf8"=>"✓",
"authenticity_token"=>"...",
"article"=>{"heading"=>"Test heading",
"content"=>"Test content"},
"commit"=>"Submit"}
見出しがあるようです。user_id を含む他のすべての列が入力されます。見出しが埋まらないのはなぜですか?rake db:migrate を実行し、reset_column_information を移行に追加しました。
def self.up
add_column :articles, :heading, :string
Article.reset_column_information
end
しかし、それはどちらの方法でも機能しませんでした。
また、Rails コンソールに移動して新しい記事を追加すると、問題なく見出しを追加できます。
問題があれば、私は SQLite を使用しています。後の移行で見出し列を追加しましたが、列の順序が最後になるのは問題でしょうか?